(navigation image)
Home American Libraries | Canadian Libraries | Universal Library | Community Texts | Project Gutenberg | Children's Library | Biodiversity Heritage Library | Additional Collections
Search: Advanced Search
Anonymous User (login or join us)
Upload
See other formats

Full text of "Analog Computing Magazine Issue 77 (A Visit with Star Trek TNG)"

The #1 Magazine For Atari Com|^i|tei* O^Arnera 



T 





OCTOBER 1989 
ISSUE 77 



USA $3,95 
CANADA $4M 



^^^ 



SPECIAL 
GAMES ISSUE! 

OOUBUSfX 

rx cmiMCHfii 

SKUUtfi4NO 





il 


-4- 


IS- 




74 69 



REVIEWS 

Astronauts 
LAi Swat 
Panther 

il ifisir wim sr4ff niir: wtma mmmmik 



Give'EmA.N.A.L.O.G.Jarrv! 




^^^s^.^. 





Two Historic Facts: 

Dewey did not delcal Truman for the Presidency in 1945. 

Truman went on to be known for his truthful, I'orthright style 

and as one of the nation's most popular Chief Executive Officers. 

2 You can save time, and save a lot of money by subscribing to 
A.N.A.L.O.G. Computing Magazine. Save $19 off the cover 
price with the convenience of having A.N.A.L.O.G. delivered directly 
to your door before it even hits the newsstands. To order use the 
handy postage-paid order card located in the back of this magazine! 

1 YEAR FOR ONLY $28 

SAVE $19 OFF IHE COVER PRICE 

1 YEAR WITH DISK ONLY $79 i 




EDITORIAl 



BY CLAYTON WALNUM 






'\ 






s most of you know, this is the last issue of this magazine 
in lis cuiient form. As of next month, ANALOG Comput- 
ing will be merged with ST-LOG to form a comprehensive 
Atari-specific publication. If you've read the publisher's let- 
ter m the previous issue, you know our reason for the merge: 
The U.S. Atari market is not large enough to support two Atari- 
specific magazines from the same publisher. Specifically, adver- 
tising, which provides an important portion o( every magazine's 
earnings, is an at all-time low. 

The publisher's letter also stated that this month v\e would <rive' 
■ou more details about the new magazine. That tiisk has fallen to 
me (lucky guy). 

The new ANALOG Computing will be much larger than the 
magazine you're now holding in your hands. It will contain 132 
pages. 48 of which will be in full color A magazine of this sue 
will give us plenty of space to cover the Alan market in full, while 
still providing the types of features and columns you've come to 

pect 

Although we'll still be offering monthly disks, both 8-bit and ST, 
we've decided not to piovide the disk version on the newsstands. 
Wc feel that having two versions of the same magazine will be con- 
fiising to both buyers and retailers. If you're inlerested in obtain- 
ing the disk each month, we urge you to subscribe. Those who don't 
wish to subscribe will be able to order the disks by mail We will 
be offering a service that will get disks out to you immcdialely upon 
the receipt of your order. In addition, we hope to be able to lower 
the disk price. 

Little otherwise is going to change. Essentially, the mergmg of 
the magazines will give you more for your money. We will be provid- 
ing complete Atari coverage in a much larger format for the same 
price. 

As usual, we would like to hear from you. Your input is impor- 
tant to us. If you have any ideas, let us know. If there's something 
we can do to make the new magazine better suit your needs, drop 
us a line. We'll give serious consideration to all your comments, 
and even share some of them in "Reader Comment." 

As always, we at ANALOG Computing are looking forward to 
serving you, our readership, for many years to come. 

Please send all correspondence regarding this editorial to: 
ANALOG Computing, P.O. Box 1413-M.O. , Manchester, CT 06040. 



i 



^ 






ANAloo liooms Into the 24th Century 10 




TX Cruncher 52 




Skull Island 58 



Error Manual 

Here's a helpful program that'll turn those 
cryptic error messages into plain English. 

by Matthew J.W. Ratcliff 

10 

ANALOG Zooms 

Into the 24th Century 

Fans of Star Trek: The Next Generation 

won't want to miss this interview with two 
of the hit show's artists. 

by Frank Cohen 

14 
Keeping Your Atari Busy 

This tutorial shows you how 

to turn your computer into a clock 

and provides some valuable programming 

information along the way. 

by Reid Brockway 

18 
Double Six 

A colorful version of Backgammon 
for your Atari. 

by Pierre Roberge 

36 
Fast Move 

For BASIC programmers wanting 

a convenient way to control 

Player/Missile graphics. 

by John W. Little 

Bit 
TX Cruncher 

Take control of Tx as he scoots across his 

electric grid, consuming energy 

and avoiding the Hulk Robots. 

by Frank Martone 

58 
Skull Island 

You awaken to find yourself laying 
on the beach of a strange island. 
What dangers lie in wait for you? 
Can you get off the island safely? 

by John Patuto 



OCTOBER A.N.A.L.O.G. Computing 




REVIEWS 



56 Astronauts 

Matthew J.W. Ratclifff 

57 L.A. Swat/Panther 

Matthew J.W. Ratclifff 



COLUMNS 



22 BASIC l^ining 

Clayton Walnum 

28 Database DELPHI 



32 Boot Camp 

Tom Hudson 

48 The End User 

Arthur Leyenberger 



DEPARTMENTS 



3 Editorial 

Clayton Walnum 

26 8-bit News 
31 Disk Contents 

46 BASIC Editor II 

viuyton vWciinum 

55 M/L Editor 

Clayton Walnum 



Stor Trek: Tlio Next 
Generation ortwork and 
photographs: ^ and ► 1989 
PARAMOUNT PICTURES 
CORPORATION. All rights 
reserved. S#ar Trek, Sfor Trokj 
The Next Genaration and 
U.S.S. EntorprliQ are 
trademarks of PARAMOUNT 
PICTURES CORPORATION. 



ANALOG 

COMPUTING 

STAFF 



Publisher 

LEE H. PAPPAS 

Executive Editor 

CLAYTON WALNUM 
Art Director 

LEW BRYANT 

Associate Editor 

ANDY EDDY 

iManaging Editor 

DEAN BRIERLY 

East Coast Editor 

ARTHUR LEYENBERGER 

West Coast Editor 

CHARLES F. JOHNSON 

Contributing Editors 

MICHAEL BANKS, FRANK COHEN, 
MATTHEW J. W. RATCLIFF 

Cover Ptiotograptiy 

GARRY BROD 

Model 
STEVE STERLING 
Cover iiiustration 

ALAN HUNTER 

iiiustrations 

FABIENNE MASON 

JENNY ADAMS 

LUI 

Copy Chief 

SARAH WEINBERG 

Copy Editor 

ALYSON GOULD 
Editorial Assistants 

PATRICIA KOURY 

CATRINA MASON 

ROBIN THOMPSON 

Chief Typographer 

DAVID BUCHANAN 

Typographers 

B. MIRO JR. 

QUITA SAXON 

LIGAYA RAFAEL 

LARRY GANNON 

Contributors 

JOE D. BRZUSZEK 

TOM HUDSON 

BARRY KOLBE 

BRYAN SCHAPPEL 

BRAD TIMMINS 

Vice President, Production 

DONNA HAHNER 

Advertising Production 
Director 

JANICE ROSENBLUM 

Advertising Production 

Coordinator 

MAGGIE CHUN 

National Advertising Director 

JAY EiSENBERG 

(213) 467-2266 

(For regional numbers, see right) 

Subscriptions Director 

IRENE GRADSTEIN 



Analog Computing Published 

By L.F.P.Jnc. 

President 

JIM KOHLS 
Vice President, Sales 

JAMES GUSTAFSON 

Vice President, Client 

Relations 

VINCE DELMONTE 

Corporate Director of 

Advertising 

PAULA THORNTON 
Corporate Editorial 

TIM CONAWAY, PAMELA CARR 



OCTOBER 1989 
ISSUE 77 



Where to Write 

All siibniissioTis should be sent to: ANALOG 
Computing, P.O. Box MIS M.O., Manchester, CI' 
()()04()l4i:i. All other editorial material (letter.s, 
pre.ss release, etc.) should be sent to: Editor. 
ANALOG Computing. 9171 Wilshire Blvd., Suite 
:«)(), Beverly Illll.s. CA 9()ai(). 

Corre.spoiideiue regarding .subscriptions, in- 
eluding problems and ciianges ol'addres.s. should 
be .sent to: ANALOG Computing, P.O. Box 16927, 
North Hollywood, CA 9161.^ or call (HIH) 
7()0-89H;i. 

Correspondence concerning a regular coluiiui 
should be sent lo our editorial addres.s, with the 
name ol the column included in the addres.s. 

We cannot reply to all letters in these pages, 
so if you would like an answer, please enclose a 
■self-addressed, .stamped envelope. 

.•\ii incorrectly addressed letter can be delayed 
as long as two weeks before reaching the proper 
destination. 

Advertising Sales 

.\ddress all advertising materials to: 
Paula Thornton — Advertising Production 
ANALOG Computing 

9171 Wilshire Blvd., .Stiite ■!()() 
Beverly Hills. CA 90210. 

Permissions 

No poiliou of this niag.izine may Ix- reproduced 
in any form witiiout written |)ermissioii from the 
publisher. Many jjiograms are copyrighted and 
not ])ublic domain. 

Due. however, to many requests from Atari club 
libraries and bulletin-board systems, our new poli- 
cy allows club libr.tries or individually run BBSs 
to iTiake ceilain piograms from ANALOG 
Computing available during tile month printed on 
that issue's cover. Kor exatuple. software I'rom the 



This does not ap])ly to programs which specili- 
call)' .state that tlie\- are not public domain and. thus. 



In addition, any prograius used must stale that 
they are taken liom ANALOG Computing Maga- 
zine. For more infomiation. contact ANALOG 
Computing at (2I.S) H.')«-71()0. ext. lfi;i. 

Subscriptions 

ANALOG Computing, P.O. Box 16927. Xoilh 
Hollywood. C:A 9161.'): (HlH) 760-89H;i. Payable 
in U.S. I'unds only. U.S.: ,$2H-one year. S.'>4-two 
years. .$76-three years. Foreign: Add $10 per 
year. For disk sub.scriptions. see the cards at the 



Authors 

When submitting articles and programs, both 
|>rogram listings and text should be provided in 
printed and magnetic form, if po.ssible. Typed or 
printed text copy is mandatoo'. and should l)e in 
upper and lowercase with douljle spacing. If a sub- 
mi.ssion is to l)e relumed, please .send a .self 
addressed, stamped envelope. 

For further information, write to ANALOG 
Computing, P.O. Box 141.^-MO. Manchester, CT 



JE Publishers Representative 

6855 Santa Monica Blvd., Suite 200 
Los Angeles, CA 90038 

Los Angeles — (213) 467-2266 

San Francisco — (415) 864-3252 

Chicago — (312) 445-2489 

Denver — (303) 595-4331 

New York City — (212) 724-7767 



ANALOG Computing (ISSN 0744-9917) is published monthly by L.F.P., Inc., 9171 Wilshire Blvd., Suite 300, Beverly Hills, CA 90210. © 1989 L.F.P., Inc. Return 
postage must accompany all manuscripts, drawings, photos, disks, etc., if they are to be returned, and no responsibility can be assumed for unsolicited materials. 
All rights reserved on entire contents; nothing may be reproduced in whole or in part without written permission from the publisher. U.S. subscription: $28 for one 
year (12 issues), $52 for two years (24 issues), $76 for three years (36 issues). Foreign subscription: Add $10 per year. Single copy $3.50 (add $1 for postage). Change 
of address: Six weeks advance notice, and both old and new addresses are needed. POSTMASTER: Send change of address to ANALOG Computing Magazine, 
P.O. Box 16927, North Hollywood, CA 91615. Second-class postage paid at Beverly Hills, CA, and additional mailing offices. 



OCTOBER A.N.A.L.O.Q. Computing 




The most frustrating aspect of Atari 
BASIC programming has got to be 
dealing with the language's arcane er- 
ror codes. Atari BASIC is a marvel, 
considering all its functionality 
squeezed into a mere 8K of ROM, but 
reasonable explanations for error numbers 
simply couldn't fit. 

As Kevin Pate explained in "Accessing 
Atari XL Hidden Memory" (ANALOG 
Computing, June 1989), XL, XE and XEGS 
computers have a full 8K of RAM loitering 
under the built-in BASIC ROM. It would be 
nice to stash part of our BASIC reference 
manual in there— the section with all the 
error-code explanations. This can streamline 
the BASIC debugging process, eliminating 
the need to flip through the dog-eared pages 
of the BASIC manual, looking for the error 
description and possible cause. 

TJie Error Manual presented here loads a 
file called ERROR. MAN into memory un- 
der Atari BASIC and stashes an index rou- 
tine into page six (1536-1791). The indexer 
hooks into the keyboard handler ("K:" de- 
vice) and is activated with the Control-Escape 
"hot key." Any time your program bombs, 
press the hot key to see a description of the 
error at the top of the display. It even works 
while the program is running. 

Typing it in 

Listing 1 is the program that will create 
your copy of Error Manual. Type it in, 
checking your work with BASIC Editor II 
(found elsewhere in this issue), then save it 
to disk. When this program is run, a file 
named AUTORUN.SYS will be written to the 
disk in Drive 1. This file is the Error Manu- 
al program. 

Once you've created the main program 
from Listing 1, type in Listing 2, also check- 
ing your work with BASIC Editor II. After 
saving a copy of this program to disk, run 
it. A file called ERROR. MAN will be writ- 
ten to the disk in Drive 1. This file contains 
all the error descriptions and is needed by Er- 
ror Manual if it is to run properly. 

Using the Program 

When run, Error Manual first asks which 
drive the ERROR. MAN file is on. Press Re- 
turn to accept the default Drive 1, or enter 
the drive number. 

You may add any error descriptions you 
wish to the ERROR. MAN file, including sta- 



THE 




bv Matthew J. W. Ratcliff 




MANUAL 



tus messages that may be used to provide in- 
formation about a program while it is 
running. This is done by modifying Lisfing 
2 and rerunning it to create a new ER- 
ROR. MAN file. Each data statement must 
begin with the error number and be followed 
by a text description of the error code, sepa- 
rated by a comma. The explanation of the er- 
ror cannot have any embedded commas, a 
limitation of the Atari BASIC READ com- 
mand. Use semicolons or dashes for punc- 
tuation. 

Although the errors are defined in numer- 
ical order, they may be in any sequence 
desired because of the search algorithm used 
by the indexer. You can define custom error 
codes and explanations for unused error 
values of one through 255. A special message 
is defined for error code 255 in Line 5620, 
as an example. Note that the data statement 
for error number zero in Line 5630 must al- 
ways be last, since it is used as an end-of- 
manual marker by the index routine. 

Each description must be 38 characters or 
less. This is enough to provide a useful re- 
port of each error code and possible reme- 
dy. For example: 169: DISK DIR 
FULL;XIO#254=format. 

An error 169 occurs when all of the direc- 
tory entries of the disk have been used (64 
files with Atari DOS). An XIO #254 com- 
mand can be issued from BASIC to format 
a new disk. As you can see, this brief note 
can save you a lot of frustration; an error 
description requires only one line of the dis- 
play with this approach. In some of the er- 
rors, part of the description begins with a 
question mark to indicate a possible cause of 
the error. Potential solutions are recommend- 
ed in some messages. 

The error-code report is always posted at 



the top line of the screen. If a graphics mode 
is enabled with a text window, the error code 
is displayed on the top line of the window. 
Error Manual does not attempt to describe 
an error if the cursor is on the top line (which 
could mangle your program, should you press 
return on top of an error-message line), or 
a graphics mode where no text window is 
currently enabled. If you suspect an error has 
occurred, break from the program and press 
Control-Escape again. 

Atari BASIC does not always save the er- 
ror codes in memory location 195, where Er- 
ror Manual looks for an error to interpret. 
Add the following two lines of code to your 
programs to ensure that BASIC always up- 
dates location 195 for you: 




The TRAP signals Atari BASIC to save the 
error number for you at memory location 195. 
Without a TRAP, this location is not updat- 
ed. You can POKE 195 with the error in ques- 
tion and press Control-Escape for a 
description. 

As an example of custom error codes, sup- 
pose you have a program that processes huge 
amounts of data and you wish to keep tabs 
on its progress. The following status mes- 
sages could be defined: 



5611 PflTft 175, Reading RAW data 

5612 DATft 176, Performing Calculations] 

5613 DflTfi 177, writing forwatted data 



After creating a new ERROR. MAN file 
with these changes, you can then read the 
operating status of your program without dis- 
rupting its computational flow. (No time is 

OCTOBER A.N.A.L.O.Q. Computing 



LISTING 1: BASIC 



wasted printing to the screen or checking for 
user status requests by your data processing 
program.) The read, calculate and write sec- 
tions of code would use a single POKE to lo- 
cation 195 with a 175, 176 or 177. Atari BASIC 
saves error codes in location 195 after hav- 
ing processed an error TRAP. Your poking 
values here will have no adverse effects on 
the execution of the program, but will allow 
Error Manual to provide reports while the 
program is running. 

Error Manual works with just about any 
Atari-compatible DOS except SpartaDOS X. 
Atari BASIC must be on when the program 
is first run. If it is disabled because you held 
the Option key at power-up or an external 
cartridge is installed, Error Manual detects 
it, issues a warning message and exits 
gracefully. 

I did a bit of testing with the Atari Assem- 
bler Editor (Asm/Ed) cartridge, and Error 
Manual will work with it. However, Asm/Ed 
does not keep assembly error codes in the 
same location as BASIC. Adventurous 
programmers may wish to eliminate the ex- 
ternal-cartridge test code and expand Error 
Manual for use with the Assembler Editor. 
I use MAC/65 almost exclusively, however. 
When Error Manual is allowed to bank 
switch ROM and BASIC RAM with MAC/65 
installed, nasty things happen. It works a cou- 
ple of times and then crashes the system. 

A great deal of code— 8K total— could be 
loaded into the RAM under BASIC. A short 
USPv routine or small handler in page four 
or page six of memory could allow access to 
a massive amount of additional computing 
power. Since this technique works properly 
only while using built-in Atari BASIC, it is 
logical to use this space to enhance the lan- 
guage. Error Manual serves as a good exam- 
ple. The Atari BASIC Source Book from 
Compute! Books, by Wilkinson, O'Brien and 
Laughton, is an excellent tour guide as you 
strive to augment BASIC'S power. 

There is much more memory available un- 
der the operating system. However, DOS XL, 
Atari DOS XE, SpartaDOS and others like 
to use this extra RAM to give you more BA- 
SIC programming space. The 130XE mem- 
ory banks and XL memory expansions can 
be used for such extensions too, but they are 
most commonly used for RAM disks. That 
8K under Atari BASIC goes to waste more 
often than any other segment of your com- 
puter's RAM. Use the techniques of the Er- 
ror Manual to get the most out of your 
machine. R 



LH 
MJ 
EF 
ZD 
IN 
PM 
MU 
Hk 
RR 
RT 

BH 
QL 

UZ 
UA 

IM 



ERROR MANUAL 
LISTING 1 

by Matthew Ratcliff 

COPYRIGHT 1989 
BY ANALOG COMPUTING 






TM 

MM 

i 
i 

JB 

■ 

MG 

■ 

GU 

■ 

HO 

I 

G5 
RP 
AJ 

I 



REM KKKKKMXKXKMKKKXXKXKKKKKKKXKKMK 

1 REM « 

2 REM « 

3 REM * 
A REM * 

5 REM » 

6 REM * 

7 REM KXXKKKKKXMKXKKKKXXXXKXKKKXKXXX 

8 REM 

10 DIM A$C1) 

20 ? "PLACE DISK IN DRIVE 1,":? "THEN 

PRE55 RETURH":INPUT A$ 

30 OPEN «i,8,0,"D! AUT0RUN.5Y5" 

40 READ A:IF AO-1 THEN PUT «1,A:G0T0 

40 

50 ? "ALL DONE!":END 

1008 DATA 255,255,0,52,251,52,69,114,1 

14,111,114,32,77,97,110,117 

1010 DATA 97,108,44,32,98,121,32,77,97 

,116,42,82,97,116,155,40 

1020 DATA 99,41,32,49,57,56,57,44,32,6 

5,110,97,108,111,103,32 

1030 DATA 67,111,109,112,117,116,105,1 

10,103,155,155,27,66,65,83,73 

1040 DATA 67,32,105,115,32,78,79,84,32 

,79,78,33,253,155,155,73 

1050 DATA 116,32,77,85,83,84,32,98,101 

,32,111,110,32,116,111,155 

1060 DATA 114,117,110,32,69,82,82,79,8 

2,32,77,97,110,117,97,108 

1070 DATA 155,27,67,97,110,110,111,116 

,32,114,117,110,32,69,82,82 

1080 DATA 79,82,32,77,97,110,117,97,10 

8,253,155,119,104,101,110,32 

1090 DATA 97,110,32,69,88,84,69,82,78, 

65,76,67,65,82,84,82 

1100 DATA 73,68,71,69,155,105,115,32,1 

12,114,101,115,101,110,116,33 

1110 DATA 155,27,73,110,115,116,97,108 

,108,97,116,165,111,110,32,111 

1120 DATA 102,155,69,82,82,79,82,32,77 

,97,110,117,97,108,155,67 

1130 DATA 79,77,80,76,69,84,69,33,155, 

67,111,110,116,114,111,108 

1140 DATA 45,69,83,67,65,80,69,32,116, 

111,32,101,110,97,98,108 

1150 DATA 101,46,155,68,111,32,78,79,8 

4,32,117,115,101,32,66,65 

1160 DATA 83,73,252,52,247,53,67,32,79 

,70,70,32,105,110,155,83 

1170 DATA 112,97,114,116,97,68,79,83,4 

4,32,111,114,32,121,111,117 

1180 DATA 32,119,105,108,108,32,67,82, 

65,83,72,155,27,65,66,79 

1190 DATA 82,84,32,69,114,114,111,114, 

32,77,97,110,117,97,108,32 

1200 DATA 105,110,115,116,97,108,108,9 

7,115,105,111,110,155,27,69,82 

1210 DATA 82,79,82,46,77,65,78,32,110, 

111,116,32,102,111,117,110 

1220 DATA 100,155,27,67,97,110,39,116, 

32,111,112,101,110,32,100,101 

1230 DATA 115,116,105,110,97,116,105,1 

11,110,155,27,80,114,101,115,115 

1240 DATA 32,69,83,67,65,80,69,32,115, 

119,105,99,101,32,97,110 

1250 DATA 100,155,82,69,84,85,82,78,32 

,115,111,32,97,98,111,114 

1260 DATA 116,46,155,155,87,104,97,116 

,32,100,114,105,118,101,32,105 

1270 DATA 115,32,69,82,82,79,82,46,77, 

65,78,32,111,110,32,63 

1280 DATA 32,91,49,93,32,27,85,110,101 

,120,112,101,99,116,101,100 

1290 DATA 32,101,114,114,111,114,32,11 

1,110,32,111,112,101,110,155,111 

1300 DATA 102,32,69,82,82,79,82,32,77, 

97,110,117,97,108,32,102 



DCTDBER A.N.A.L.O.Q. Computing 



|i3ie DATft 165,108,161,46,155,27,85,110 

,101,120,112,101,99,116,101,106 
■1326 D6T0 32,161,248,53,243,54,114,114 
1 ,111,114,32,111,116,32,82,69 

1330 DftTft 65,68,155,27,111,102,32,69,8 

2,82,79,82,32,77,97,110 

1340 DflTfl 117,97,108,32,102,185,108,10 

1,46,155,27,49,32,32,32,32 

1350 DftTft 32,32,32,32,32,32,68,49,58,6 
'9,82,82,79,82,46,77 

1360 DftTfl 65,78,155,27,169,8,32,69,55, 

169,8,162,52,32,113,55 

1370 DflTft 173,258,3,240,8,169,108,162, 

52,32,113,55,96,173,1,211 

1388 DftTfl 41,2,240,8,169,54,162,52,32, 

113,55,96,169,49,141,41 

1390 DftTfl 54,169,113,162,53,32,113,55, 

169,54,162,29,168,18,32,44 

1400 DATA 55,173,29,54,201,27,288,8,16 
J 9, 35, 162, 53, 32, 113, 55, 96 
31418 DATA 201,155,248,11,281,49,144,21 
1 2,201,57,176,208,141,41,54,162 
11428 DATA 16,169,12,157,66,3,32,86,228 
I ,162,16,169,3,157,66,3 

1430 DATA 169,4,157,74,3,169,48,157,68 
' ,3,169,54,157,69,3,32 

1440 DATA 86,228,152,16,10,169,68,162, 

53,32,113,55,76,59,54,173 

1450 DATA 1,211,9,2,141,1,211,162,16,1 

69,7,157,66,3,169,0 

1460 DATA 157,68,3,169,160,157,69,3,16 

9,254,157,72,3,169,31,157 

1470 DATA 73,3,32,86,228,192,136,240,1 

8,169,236,162,53,32,113,55 

1480 DATA 162,16,244,54,156,55,169,12, 

157,66,3,32,86,228,96,162 

1490 DATA 16,169,12,157,66,3,32,86,228 

,165,12,141,1,6,165,13 
;i50O DATA 141,2,6,169,0,133,12,169,6,1 

33,13,32,3,6,169,172 
|1510 DATA 162,52,32,113,55,173,1,211,4 

1,253,141,1,211,96,142,68 

1520 DATA 3,141,69,3,140,72,3,162,0,14 
]2, 73, 3, 169, 5, 141, 66 

1530 DATA 3,76,86,228,83,58,0,72,162,9 
16,169,12,157,66,3,32 
11548 DATA 86,228,162,96,169,3,157,66,3 

,169,66,157,68,3,169,55 

1558 DATA 157,69,3,104,157,75,3,41,240 

,73,16,9,12,157,74,3 

1560 DATA 76,86,228,141,68,3,142,69,3, 

133,224,134,225,160,0,148 

1578 DATA 73,3,177,224,201,27,240,10,2 

00,208,247,238,73,3,230,225 

1580 DATA 208,240,140,72,3,169,11,141, 

66,3,162,8,76,86,228,0 
|1598 DATA 6,233,6,32,255,255,120,173,8 

,2,141,82,6,173,9,2 
11600 DATA 141,83,6,169,72,141,8,2,169, 

6,141,9,2,88,96,48 

1610 DATA 58,65,79,75,44,69,114,114,11 

1,114,32,77,97,110,117,97 

1620 DATA 108,44,98,121,32,77,97,116,4 

2,82,97,116,155,63,58,69 

1630 DATA 114,114,111,114,32,117,110,1 

00,101,102,155,72,173,9,210,201 

1640 DATA 156,240,4,104,76,255,255,72, 

138,72,152,72,173,1,211,9 

1550 DATA 2,141,1,211,165,84,240,4,165 

,87,240,3,76,218,6,165 

1660 DATA 195,240,57,169,0,133,208,169 

,150,133,209,160,0,177,208,240 

1670 DATA 24,197,195,240,31,230,208,28 

8,2,230,209,177,208,201,155,208 

1680 DATA 244,230,208,208,232,230,209, 

208,228,169,58,133,208,169,6,133 

1690 DATA 209,76,177,6,230,208,208,12, 

230,209,208,8,169,28,133,208 

1700 DATA 169,6,133,209,160,0,177,208, 

201,155,240,20,201,32,208,4 

1710 DATA 169,0,240,7,201,91,176,3,56, 

233,32,145,88,200,208,230 



I 



1720 DATA 192,39,240,9,169,0,145,88,20 

0,192,39,208,249,173,1,211 

1736 DATA 41,253,141,1,211,104,168,104 

,170,164,104,104,64,224,2,225,2,54,54 

1740 DATA -1 



LISTING 2: BASIC 



REM KXKKKKKKXXXXKKKKKKKKXXXKXXKKKK 



-1 THE 



on error tt 
BLS; 



IZ 
TA 
PI 

KZ 
BM 
UT 
XJ 

ZF 

KU 

ET 



■;e$ 



HT 



1 REM * ERROR MANUAL » 

2 REM » LISTING 2 W 

3 REM * by MATTHEW RATCLIFF * 

4 REM * * 

5 REM * COPYRIGHT 1989 « 

6 REM * BY ANALOG COMPUTING » 

7 REM XXXXXXXXKXXKKKXXXXXXXXXXKKXXXX 

8 REM 

18 GRAPHICS 8:DIM E$ C38) , BL$ C38) : REM M 
AX ERROR LINE = 38 BYTES 

15 BL$C1)= BL$C38)= BLSt2)=BL$ 

28 ? "Ready to Make ERROR Manual":? "P 

ress RETURN ";:INPUT E$:POKE 752,1:? 

38 RESTORE :TRAP 48:0PEN ttl, 8, 0, "D : ERR 

DR. MAN": GOTO 58 

48 ? "CAN'T OPEN 'D : ERROR .MAN ■": ? "ERR 

OR ";PEEKC195J;" LINE "; PEEK C186) +256* 

PEEKtl87J :END 

58 READ E$:ERN0=UALCESJ :IF ERNO: 

N GOTO 100 

68 READ E$ 

70 POSITION 2,5:? "Working 

";ERNO;" ";:P0SITI0N 2,6l 

75 POSITION 2,6:? ;E$; 

80 PUT ttl, ERNO:? ttl;ERN0;"! 

90 GOTO 50 

100 POSITION 2,10:? "ERROR Manual comr 

lete, wpapup" 

110 CLOSE ttl 

120 POKE 752,0:? "Done!" 

5000 REM ERROR MANUAL File DATA 

5020 DATA 2, NOT enuf RAM for next LINE 

or DIM 
5030 DATA 3, VALUE ERR; tt out Of expect 
ed range 
5040 DATA 4, TOO Many Variables; 128 MA 

K 

5050 DATA 5, STRING Length Error; bad i 

ndex 

5060 DATA 6, OUT Of DATA; READ past end 

5070 DATA 7, NUMBR>32767 for LINE tt or 

■INT' 

5080 DATA 8, INPUT stMnt Error; tt expec 

ted 

5090 DATA 9, DIM Error; too BIG or re-D 

IM 

5108 DATA 10, ARGUMENT Stack Overflow 

5110 DATA 11, FLOATING Point ERR;tt too 

big/sMal 1 

5120 DATA 12, LINE tt referenced NOT FOU 

ND 

5130 DATA 13, NEXT With NO previous FOR 

5148 DATA 14, LINE Too Long; MAX length 

=120 

5150 DATA 15,G0SUB or FOR Line Deleted 

5160 DATA 16, RETURN found with NO GOSU 

B first 

5170 DATA 17, 'ERROR-' LINE found durin 

g RUN 

5180 DATA 18, BAD String Char for UAL f 

unc 



(continued on page 50} 



OCTOBER A.IM.A.L.O.Q. CompuCing 



The Complete 



12 ISSUES 
ONLY $28 





•^ 




INTRODUCING 

ANALOG'S NEW 

EXTENDED 

FORMAT! 

128 FACT-FILLED PAGES 

BRINGING YOU THE 

LATEST FROM BOTH THE 

WORLD'S OF 8-BIT 

AND ST! FINALLY, ONE 

PUBLICATION GIVING 

YOU THE COMPLETE 

ATARI COVERAGE 

YOU NEED! 





fUVC^k^DE 



COMPUTING 



P.O. Box 16927 
North Hollywood 
CA 91615 



NAME 



n 



12 Issues $28 



CIWYY 



GET THE NEW ANALOG COMPUTING ON DISK! 

n 12 ISSUES OF ANALOG COMPUTING WITH 
8-BIT DISK-ONLY $79! (cdjxy) 

n 12 ISSUES OF ANALOG COMPUTING WITH ST 
DISK— ONLY $79! (cdjxw) 



ADDRRSS 


CITY 


STATE 


ZIP 


D PAYMENT ENCLOSED 


D BILL ME 


CHARGE MY U VISA 


QMC 




# 




F.XP 


SIGNATURE 



MONEY BACK ON UNUSED PORTIONS OF SUBSCRIPTIONS IF NOT SATISFIED! FOREIGN- 
ADD $10. MAKE CHECKS PAYABLE TO LFP, INC. YOUR FIRST ISSUE WILL ARRIVE IN 6 TO 
8 WEEKS. WATCH FOR IT! OFFER EXPIRES JANUARY 31, 1990 



./^~». 






ZOOMS IISITO 



OV THE SET OF STIVRT^^Ey^ 













■*-(r ■_ 


^__ " ^'< 




'J 


r 


m 




i 




"■^ or I dipt into the future, far as human 

J ' eye could see, saw the vision of the 

world and all the wonder that would 

' . be." So wrote Alfred, Lord Tennyson 

k about the coming era of wonder. This 
was the 1800s, an era in which Tennyson saw 
the light of a new hope and prosperity. The 
industrial age was decades away, but techno- 
logical change was inevitable. 

We are now approaching another wave of 
wonder and awe. The fin de si'ecle is bring- 
ing computers into a new age of computer af- 
finity. The days when computers were viewed 
as a threat are slipping away, yielding to a 
view of them as companions to be regarded 
more as helpful tools than as unknown chem- 
ical compounds. 

Television has been the best reflection of 
the public's opinion of computers and tech- 
nology. In the 50s, Commander Corey fought 
alien space ships equipped with highly 
technological-looking devices. The 60s saw 
crazed mainframe computers threatening to 
destroy the world in the Outer Limits televi- 
sion series. In the 70s we watched secret 
agent Max Smart defend the country with the 
aid of computers and, occasionally, an an- 



droid. The 80s have brought computers to our 
homes and bombarded us with a hundred 
channels of cable television featuring such 
computer-age characters as Max Headroom. 

The accuracy of many television programs 
has been startling. Interstellar space flight, 
artificial hibernation, cybernetics and artifi- 
cial intelligence seem less like science fic- 
tion today partly because television has 
covered these futuristic issues. Television cur- 
rently offers an unusual mix of new ideas and 
programs, with Star Trek: The Next Genera- 
tion leading the pack. Once a week the star- 
ship Enterprise jonmeys into unknown parts 
of the galaxy to discover new cultures and life 
forms. 

The Next Generation builds on the origi- 
nal Star Trek series, which premiered in the 
late 1960s. The story ideas and visual effects 
made Star Trek different from other science- 
fiction television shows. Science-fiction 
writers were called upon to create a world 
that was believable, an extrapolation of the 
period's technology three hundred years into 
the future. 

Twenty years after the original show was 
cancelled, The Next Generation unites a new 



STAR TRIK Th« Naicl a*n*ralian Photai 1989 
Parninaunl PIcliiras Carperalion. All righli raiarvad. 



cast to cover morality and ethics issues once 
a week. The audience gets a glimpse at what 
the world of the future loolcs like, and the 
results are impressive. 

In two seasons of new episodes, we have 
seen the crew of the Enterprise struggle with 
computer viruses, computer pirates and ad- 
vanced technology. Many of the scripts deal 
with today's problems, projected into the En- 
terprise scenario. Written by futurists, the 
scripts are believable. 

Recently, ANALOG Computing was giv- 
en a chance to discuss the world of Star Trek 
with two of the artists who bring the show's 
technology alive every week: Mike Okuda, 
graphic designer, and Rick Sternbach, sen- 
ior illustrator. Although their principal 
responsibility is to make the sets, computer 
displays and other visual effects come to life, 
Okuda and Sternbach have a clear futuristic 
vision of technology and computers. 

ANALOG: Star Trek's new Enterprise is 
currently the public's most visible computer 
terminal of the future. What went into the de- 
sign of the computer interfaces of the En- 
terprise? 

Okuda: What we wanted to project was the 
idea that all the [computer] displays were soft- 
ware definable. For example, when the ship 
is in warp drive, the displays show different 
information than when the ship is orbiting a 
planet. The same display acts and reacts de- 
pending on the situation or context of usage. 
We very deliberately didn't push the technol- 
ogy of the computers we use. We couldn't 
afford to see a great deal of control recon- 
figuration on camera. 

ANALOG: When you talk about not be- 
ing able to afford something, 1 take it you 
mean budgetwise for filming the effect. 

Okuda: Yes. Some sets have working com- 
puters built into them. For the most part, if 
we need a display screen to do a specific 
thing, we can rig it to do that particular thing. 
It might be a computer panel turning on or 
on object lighting up. But for the most part 
you can really see the technology working, 
not because of the action on a panel, but be- 
cause of the way the actor works with it. 

ANALOG: Are the voice-activated com- 
puter panels designed to look different from 
the others? 

Olcuda: Not really, because, theoretically, 
each panel is a general-purpose terminal that 
just happens to be currently configured for 
a specific task. Some of them just lend them- 
selves to being more voice-aware than others. 

Sternbach: Theoretically, you could walk 
up to any of these panels and fly the vehicle. 
If you have the correct training, as a pilot. 



for example, you could walk up to any of 
these black panels and say, "Reconfigure for 
navigation." And just go. 

ANALOG: There are a number of porta- 
ble computing devices that the crew walks 
around with from time to time. Are these just 
calculators, or are they something more? 

Sternbach: You could call them Pocket 
Cray computers. They are separate and port- 
able. When you see an actor walking around 
with one of these small grey Personal Access 
Display Devices (PADDs), it is like a baby 
panel. You could be walking down a corridor 
or sitting in a lounge while working with your 
PADD; you don't always have to be standing 
in front of a panel. Even though the image 
is fairly small, you have all the resolution of 
a larger panel. You can pop from menu to 
menu. 

Okuda: If you have enough memory, 
[laughs] 

Sternbach: Whenever you see a panel 
[portable or not], they pretty much all do the 
same thing. 

ANALOG: Have you given any consider- 
ation to the type of operating system that 
would make it all work? 

Okuda: The operating system is the Library 
Computer Access Retrieval System, the ver- 
sion is 40273. 

ANALOG: The Enterprise appears to be 
the flagship of the fleet. Is the operating sys- 
tem available off the ship to the common 
person? 

Sternbach: Oh, gosh no. This was 
produced by Star Fleet Research and De- 
velopment. 

Okuda: That's true; however, one would as- 
sume that eventually this standard technolo- 
gy would absolutely be available to the 
average person. But you should remember 
that the average person wouldn't need all the 
add-on modules for warp [drive] field regu- 
lation or other ship maintenance. 




of the personal computer to get people work- 
ing and productive. I try to project, in subtle 
little ways, that even though the technology 
is advanced, it is accessible by everyone. For 
example, one of the scripts had a crew mem- 
ber looking at a personal document. In the 
upper-left corner of the screen I drew in red 
letters, "Personal Information, Restricted Ac- 
cess." The idea was that even though com- 
puters are everywhere, the people who run 
the computers respect the privacy of the in- 
dividual. 

Sternbach: The downside to all this wide- 
spread use of computers can be seen today. 
Look at some companies monitoring tele- 
phone operators to determine their produc- 
tivity. It stifles creativity and puts a lot of 
pressure on the workers. We have almost the 
opposite here in the future. You're free to de- 
sign things [with the computer] that will be 
useful and exciting. Using computers as tools 
lets you build an exciting future. 

One of the reasons Mike and I have been 




MRAMOUNT PiaURES CORPORATION 



PARAMOUNT PiaURES CORPORATION 



ANALOG: Do you envision the Star Trek 
world to be like 1984, with Big Brother com- 
puter looking over your shoulder? 

Olcuda: I very much believe in the power 



slaving over this show is that Star Trek did 
tor us what the show did for us originally 27 
years ago. It was a spark. We thought, "Wow, 
maybe we can do that out in space!" We try 
to prompt that kind of response from people 
watching the show now. Maybe we can give 
someone else that little kick of imagination. 

ANALOG: It is really refreshing to hear 
two graphic artists talk in such technical and 
well-thought-out terms. Would you expect 
this from other artists? 

Sternbach: Between Mike and myself, we 
have enough science background and enough 
people we can contact to give the writers what 
they need. And they do ask for information 
all the time. 

Okuda: We are in a fortunate situation here 
in that we have a good relationship with the 
writers. Whenever possible, they'll ask us for 
things. They'll say, "The warp engines are 
going to blow up on the U.S.S. Yamato. What 
would happen? What would have caused that 
to do that?" We give them some information, 
and where they can use it, they put it into the 
story. 



OCTOBER A.IM.A.L.O.a. Computing 



Sternbach: Another part of this is that we 
didn't come from the traditional Hollywood 
background. I mean, we didn't just come off 
a detective show. We came from science to 
Star Trek. 

ANALOG: The mission of the Enterprise 
seems somewhat military in nature. Has that 
affected your design of the technology? 

Okuda: The typical crew member is hired 
onboard because he is responsive, resource- 
ful and technically able. We're not trying to 
say that in the 24th century everyone has to 
learn to use a computer. You won't find mes- 
sages saying "Don't use DELETE *.*." There 
is a difference between the crew members on 
the Enterprise and everyone else. The crew 
members are creative, highly skilled profes- 
sionals who have been sent off to do a bunch 
of assignments. The buttons on our panels are 
tools; they are not mind-controlling directors. 

Sternbach: The people who contribute to 
the running of the ship are not being judged 
on their productivity— for example, how 
many buttons they push in a day. It's based 
on whether they can do their jobs. 

ANALOG: What about situations other 
than their decision-making, on which the 
crew members could be judged. For exam- 
ple, in consumer situations, what happens 
when they want to buy something? Are there 
any other uses for the panels, other than 
maintaining the ship? 

Sternbach: I don't know. Do they have 
money in the 24th century? 

Okuda: There is presumably some sort of 
tracking of resources. But [the people of the 





MIKE OKUDA 



RICK STERBACH 

24th century] are by no means as success- 
oriented as we are today. 

ANALOG: Can the computers be thought- 
driven? 

Okuda: We've abandoned the idea of that 
kind of personal controL Some of the alien 
cultures the Enterprise encounters will have 
mind-directed devices, but the Enterprise 
panels are manually oriented. 

Sternbach: That will surely happen in the 
future, but today it's awfully hard to get that 
across to the audience. 

Okuda: On television, that would translate 
into a lot of voiceovers. At this point, many 
of our ideas are constrained to the television 
program. For example, we have a lot more 
buttons than I really think we would have this 
far into the future. Our first concept of a con- 
trol panel had 12 buttons on it, which didn't 
go over very well. You have to consider what 
a panel looks like to the audience. Twelve 
buttons are probably all you might need, but 
it doesn't look interesting visually. 

ANALOG: For that matter, doesn't it seem 
like having 1,000 people on a space ship is 
unnecessary? If you only need 12 buttons on 
a panel, why 1,000 crew members on the En- 
terprise! 

Sternbach: These thousand-plus people 



have a reason for being here; they're not all 
here to run the ship. They are here to run 
scientific experiments, some are en route to 
somewhere else, and there are people of var- 
ious disciplines. 

Imagine packing all the support people 
necessary to run the Space Shutde into the 
Shuttle craft— all the people back in Hous- 
ton supporting the ship. In Houston you have 
science-support people and engineers. Be- 
yond the orbiter itself, you really do need 
more than five people to make it work. The 
Enterprise uses everyone it needs to support 
the ship, but it brings all of them along for 
the ride. 

ANALOG: Back to the idea of buttons, 
some new Buick cars come with a touch- 
sensitive video screen to set the radio, air- 
conditioning and trip indicators. They use a 
CRT coated with touch-sensitive materials. 
It's crude, but it exists today. Where do you 
see this technology going? 

Sternbach: We started with that kind of 
idea, only took it into the future and made 
it better. 

Okuda: You've got your basic buttons. 
These each control a function or process. You 
also have organizational controls that split the 
panel into areas. We also have these small 
joystick panels. We are specifically not sup- 
posed to use them very often. [As a user] I 
shouldn't have to aim a pointer at deck 27 to 
get information from the display. I should be 
able to touch the screen or ask it for infor- 
mation. But sometimes you might want to do 
something out of the ordinary that requires 
this sort of control. 

Sternbach: What happens if your user isn't 
humanoid? In your Ammonia helmet, you 
might not be able to talk to the panel. 

ANALOG: All of the panels seem to have 
accompanying sounds. When an actor hits a 
button, you hear a small tone. Was this some- 
thing you developed? 

Okuda: All of the sounds were created by 
the post-production company. Many times 
you can take something that looks exciting, 
but by adding those little beeps, it brings it 
to life much more than if we had spent mon- 
ey to rig a control to work with an actor. 

Sternbach: I think [the sounds] are great. 
There have been times when an actor goes 
to push a button and it doesn't work and you 
hear a "wrong" sound. The idea that a but- 
ton can reject its user is great. 

Okuda: There is something more than just 
a touch matrix designed into the material of 
the panel. In addition to the touch matrix and 
the display matrix, there are programmable 
transponders built in there. When you hit a 
(continued on page 26) 



OCTOBER A.N.A.L.a.Q. Computing 



13 




HIS ATARI 





What do you do with your Atari when you're 
not using it to compute? Do you turn it off? 
Do you leave it on, announcing patiently to 
the world that it is "READY"? Do you load 

up a game and leave it endlessly playing it- 
self in the demo mode? Well, here's some- 
thing more practical for your Atari to do 
when it has time on its hands: Turn it into 
a clock. 

"Right," you say. "Just what I need, an- 
other digital clock." 

Guess again. This is an analog clock, with 
hands and tick-tocks and everything. Actu- 
ally, it only looks like an analog clock; you 
can't get much more digital than a digital 
computer. So I guess you'd have to say it's 
a digital analog clock. 

Besides being a fun novelty, this program 
illustrates several useful techniques you may 
wish to use in other programs. (See "What 
Makes it Tick?" below.) And there are sever- 
al ways you can enhance the program if you 

want to. Plus, this clock has a special feature: 
a metric version. If you select the metric op- 
tion when you start your clock, you'll get a 
metric readout. 








Building and Running 
Your Clock 

To make your digital analog clock, simply 
type in the BASIC program (and don't forget 
to check your typing with BASIC Editor II), 
save it, then type RUN. The program will ask 
you for the current time in hours and minutes, 
separated by a comma. (I know, a colon is 
proper. I got lazy.) It will take anything, even 
negative time. The clock then winds and dis- 
plays itself and starts keeping time, syn- 
chronized to the power line just like any 
appliance clock. Its ticks and locks are ex- 
actly one half-second apart, and it updates 
its hands every ten seconds. The color-cycling 
Attract mode is disabled, so you can leave 
your clock running if you want to, although 
it would be a good idea to turn the bright- 
ness down on your TV if you do. (One of the 
suggested enhancements is to make the colors 
rotate through various pleasing combina- 
tions—your own Attract mode.) 

What Makes il Tick? 

The program incorporates several useful 
techniques you may want to use in other pro- 
grams. These include generating characters 
in a graphics mode, measuring time accurate- 
ly, calculating and plotting positions around 
a circle and generating sounds with controlled 
attack, peak and decay times. 

Line 120 reads a machine-language routine 
into page-six RAM. This routine i.s used to 
generate the ticks, tocks and winding sound 
and is an example program straight out of Ap- 
pendix 9 of the Atari Assembler/Editor man- 
ual. It is called with the BASIC USR function 
as follows: 

X = USR(1536,F,A,P,D) 
where F controls the frequency of the note 
you want, A is the attack time, P is the pla- 
teau time (loudest portion) and D is the de- 
cay time. If you have the manual you can 



FINALLY, THERE'S THE 
TIMEKEEPING 
"WORKS" OF OUR 
CLOCK. THE ATARI HAS 
THREE 
ADDRESSES— 18, 19 
AND 20— WHICH ARE 
REGISTERS COLLECTIVE- 
LY REFERRED TO AS THE 
"REAL-TIME CLOCK." 
THEY COUNT 1/60TH- 
SECOND TV FRAMES, 
WHICH ARE SYN- 
CHRONIZED TO THE 
60-HERTZ AC POWER 
IN YOUR WALLS. THESE 
REGISTERS ARE ZEROED 
BY THE PROGRAM 
WHEN THE CLOCK IS 
STARTED (LINE 330). 
THEN THE COUNT THEY 
ACCUMULATE IS USED 
TO UPDATE A VARIABLE 
REPRESENTING TIME, 

CALLED (OF ALL 
THINGS) TIME. ACTU- 
ALLY, TIME IS KEPT IN 
DEGREES OF ROTATION 
OF THE BIG HAND. 



study the details, or you can simply plug the 
routine into your program using the contents 
of Lines 120 and 690-710. 

Lines 240-270 draw a clock face. The pro- 
gram runs in Graphics mode 6 and the cen- 
ter of the face is at X,Y position 83,48 in that 
mode. The two formulas compute points 
around a circle at a radius R for angles theta 
in degrees measured clockwise (how ap- 
propriate!) from vertical. Note that numbers 
on a clock are 30 degrees apart. 

Since Graphics 6 is a nontext mode, dis- 



playing the numerals is a bit tricky. The 
subroutine that does this. Lines 600-670, is 
a little complicated but very handy. With a 
few changes it can be used in other modes 
as well. It finds where the Display List is lo- 
cated, and, from that, the location of screen 
RAM. Then it draws the characters of string 
MSG$ where you want them by copying the 
shape-defining information from Atari's stan- 
dard character set into screen RAM. MSG$, 
and the desired XY coordinates of the left- 
most character are supplied by the calling 
routine. (See Line 300.) 

Finally, there's the timekeeping "works" of 
our clock. The Atari has three addresses— 18, 
19 AND 20— which are registers collective- 
ly referred to as the "real-time clock." They 
count J^oth-second TV frames, which are syn- 
chronized to the 60-Hertz AC power in your 
walls. These registers are zeroed by the pro- 
gram when the clock is started (Line 300). 
Then the count they accumulate is used to up- 
date a variable representing time, called (of 
all things) TIME. Actually, TIME is kept in 
degrees of rotation of the big hand. 

Note that when the real-time clocks regis- 
ter reach their maximum value, 65535, they 
reset to zero. This takes a little over 18 hours. 
Currently, when this happens our clock stops. 
One of the suggested enhancements is to over- 
come this limitation. 

TIME is used to compute new positions of 
the hands. This is done every ten seconds 
(Lines 410 and 390), based on another vari-? 
able, SEC, which actually is a count of sec- ° 
onds. SEC is also used to time the ticks and 
tocks. SEC is updated every half-second 
when 30 more counts of the real-time clock 
accumulate. 

Those are the key design features of our 
clock. If you would like to add some features 
of your own, here are some suggestions: 

• Make it run longer than 18 hours. 

• Add your own color-rotating Attract mode. 

• Add a true digital readout. 

• Turn it into an alarm clock. 

• Add graphics to make it a mantle clock,| 
cuckoo clock, etc. 

• Make it chime or cuckoo. 

• Add a sweep second-hand. 
After all, you might as well keep your com- '\ 

puter as busy as possible when it has time 
on its hands. 



Reid Brockway is a systems and software 
engineer for Intennetrics, Inc. , where he de- 
signs real-time sqfhx'arefor aircraft and space 
applications. (H 



DCTDBER A.N.A.I..a.Q. Computing 



iSTING 1 : BASIC 



5 




HY 10 REM MKXKKKKX 



KXKKKMKXKK 



HT 11 REM » 
AG 12 REM * 
ZM 13 REM * 
WT 14 REM * 
WD 15 REM * 



DIGITAL ANALOG CI 
by Reid Brockwa' 



TIMG « 



I 
I 



I 



COPYRIGHT 198S 
BY ANALOG COMPUTING 

Ik 16 REM KXKKXXKXXKXXXXXKXXKXXMKXKKXXXX 

GG 20 DIM A$ tl) :IMCR=30;DATLN=730 ; DIGITS= 
12 

yy 30 ? "5":? ;? " digital clock";? ;? 

RUN 
C5 40 ? "Te ll we whattiMe it is.";? 
EM 50 ? "C IXlHiH B I!,t1illk<j-H )";? 
OF 60 TRAP 50;INPUT HRS,MIH 
ZP 70 ? ;? "Do you want a 'Metric' clock" 

L5 80 INPUT AS;IF AS<>"Y" THEN 100 
PO 90 INCR=36:DATLN=740;DIGIT5=10 
YH 100 TRAP 40000 ; GRAPHICS 2+16 ; POSITION 
1,4:? a6;"JUST A MOMENT":P05ITIOH 1,6: 

? tt6;"MH ILE I MIND MY5ELF" 

LK 110 REM l:<J:rii»--t.ll|ir»--linJ.llkHiIJ 

JP 120 FOR 1 = TO 73;READ K : POKE 1536 + 1, X 

:NEKT I 

SI 130 REM i;MITJ''HirHi'L»--Jill|Lri 

KC 140 FOR 1=1 TO 5:F0R J=l TO 20 

OR 150 A = U5RC1S35,30-J/'S, 1,1,1} 

GE 160 NEKT J:FOR W=l TO 200 ; NEXT W:NEKT 

LO 170 REM tm»»ir».HH.iii 

GA 180 TIME=HR5*350+MIN*B-1 

TB 190 DIM M3G$C2) 

HU 200 GRAPHICS 6+16 

HR 210 SETCOLOR 4,2,0;C0L0R 1 

RE 220 R=35;SEC=0;NKTHLF=30;LITTLE=2O;BIG 

=34:HftNDSFL=0;T ICK=O;DE G 
JN 230 REM l.lJ.T'»iH.!JmFrTi 
YK 240 FOR THETA=0 TO 360 STEP INCR 
BJ 250 X=83+R»SINCTHETA3 
BC 260 Y=48-R*C0S CTHETA5 

QK 270 PLOT X , Y : NEXTTHETA 

FB 280 REM rTTT ■illi:!J.Ht--»<.»^HJ 

YT 290 RESTORE DATLN 

NM 300 FOR N=l TO DIGITS : MSGS=STRS (N3 ; REA 

D X,Y;GOSUB 600:NEXT N 
JG 310 GOSUB 430:G0SUB 480 : REM Add hand s 
FT 320 REM ^'VJ J.^i'MJiU'l JJilMi^J JJ ;»-^Tn 
EH 330 POKE 18,0;P 0KE 19,0;P0 KE 20,0 
ZK 340 REM i:ht1iW4M j» J.UkJi.TJ 
LT 350 IF tPEEKC18)»6S536+PEEKC193»255+PE 

EKC2e))>=NXTHLF THEN 370 
VX 360 POKE 77,0:G0T0 350 
TB 370 HXTHLF=NXTHLF+30 
IT 380 fl=U5RC1536,20*CTICK+l) ,1,3,13 

PT 390 IF HANDSFLOO THEN ON TICK + 1 GOSUB 
430,480 

DQ 400 SEC=SEC+0.5:TICK= NOT TICK 

00 410 IF SEC=10 THEN HANDSFL=1 ; SEC=0 

OK 420 GOTO 350 

NH 430 REM 

XN 440 T=TIME;G0SUB 550 ; XOLD=X ; YOLD=Y 

LB 450 T=TIME+l;GOSUB 550 : XNEH=X : YNEW=Y 

MR 460 GOSUB 570;RETURN^ 

LN 470 REM 

NJ 480 T=TIME:G05UB 530 : XOLD=X ; YOLD=Y 

JT 490 T=TIME+l; GOSUB 530 : XNEH=X ; YHEW=Y 

yO 500 GOSUB 570 

DB 510 TIME=TIME+ 1;HANDSFL=0; RETURN 

50 520 REM L-ill.'^J--»<. ■<.!:! JIH*iTlirMan3iai 

HN 530 X=83+BIG«SIN CT5 ; Y=48-BIG«C0S CT) 

ZJ 540 RETURN 

HT 550 X=83+LITTLE*SINCT/123 ;Y=48-LITTLE» 
COSCT/123 ;RETURN^ 

RJ 560 REM \ 

IL 570 COLOR 0:PLOT 83,48!DRflWT0 XOLD,YOL 
DjCOLOR l;PL0T 83,48:DRAWT0 XNEW,YNEW 

ZR 580 RETURN 

MB 590 REM 

RP 600 DLIST=PEEKC550)+PEEK C561)«256 

HK 610 SCRAM=PEEKCDLIST+4)+PEEKCDLIST+5)» 
256 

MK 620 FOR 1=1 TO LENCMSG$3 

KM 630 SHAPE=57344+8*(ASCCMSGSCI, 133-325 

CH 640 STARTL0C=SCRAM+X+2e«Y+I-i 

PG 650 FOR J=0 TO 7 



Subr. to update little hand 



subroutine to update big hand 



Subroutine to redraw hand 



subp. to display text in Gr.6 




560 POKE STARTL0C+20*J, PEEK CSHAPE+J) 
670 NEXT J;NEXT I:RETURN 

680 REM i.i.iii,r»-4inj.iik»iiT.»<.pn 

690 DATA 104,104,104,141,0,210,104,104 

,133,204,104,104,133,205,104,104,133,2 

06,169,16 0,141,1,210,166,204,32,65,6 

700 DATA 24,105,1,201,176,208,241,169, 

14,166,205,32,65,6,56,233,1,208,246,16 

9,175,141,1, 210,166, 206, 32, 65, 6, 56 

710 DATA 233,1,201,159,208,241,96,160, 

19,136,208,253,202,208,2 48,96,256 

720 REM l. ' | l| L l -J.HHJ.Wt«. l i »i hV 'n 

730 DATA 13,8,15,22,16,44,15,65,13,80, 

10,86,7,80,5,65,4,44,4,22,6,8,9,0 

740 DATA 14,13,16,33,16,57,14,78,10,88 

,6,78,4,57,4,33,6,13,9,0 fq 




OCTOBER A.M.A.L.O.Q. Computing 





B8UBII 



by Pierre Roberge 



Every computer owner has in his soft- 
ware collection at least one computer- 
ized "thinking game." The Atari 8-bit 
owner is no exception. Whether it be 
chess, checkers, reversi, battleship 
or connect four, there's surely one of these 
games present on your disks. There is, how- 
ever, a game that's been overlooked: back- 
gammon. But now Double Six is here. 

Typing it in 

Type Listing 1, check it with BASIC 
Editor II (found elsewhere in this issue) and 
save it. Now type NEW and type Listing 2, 
checking it with BASIC Editor II and saving 
it when it's been entered correctly. When 
RUN, Listing 2 will create all the missing 
lines from the main program that contain the 
control characters used in machine-language 
subroutines. These lines will be listed 
to a file called D:D0UBLE6.CHR. 



LISTING 1: BASIC 



Now LOAD "D:D0UBLE6.TMP", ENTER 
"D:D0UBLE6. CHR" and save the complete 
program as D0UBLE6.BAS. You are now 
ready to go! 

Playing the Game 

Double Six is a game for two players in 
which Joystick One moves the red men and 
Joystick Two moves the blue men. Each play- 
er has 15 men set on "points" around the 
game board. The red men move counter- 
clockwise from the top-right section of the 
board to the bottom-right section (red's in- 
ner table); the blue men move clockwise from 
the bottom-right section to the top-right sec- 
tion (blue's inner table). Note the red and blue 
arrows that indicate the way around. The ob- 
ject of the game is to remove all your men 
from the game board by the roll of the dice. 
More on that later. 

First you press the joystick button in order 
to determine who goes first. The dice will 
stop rolling. The blue player has the top die, 
the red player has the bottom one. If both 
players roll the same number, they must try 
again until one of them has rolled the higher 
number. That player then goes first, using the 

SIX 

numbers shown on the two dice. The players 
then play in turn using the two dice. The 
pointer in the center of the board turns red 
or blue depending on which player's turn it is. 

Use your joystick to place the pointer on 
the man you want to move, use it again to 
choose a die. Your man will move according 
to the number shown on the die. You can 
move the same man with the two dice as long 
as the points designated by each die are open, 
or you can play each of the two numbers with 
different men. 

When a die has been used, an "X" will ap- 
pear in front of it to indicate you cannot use 
it again. A player must use both numbers of 
each roll whenever possible. If he can use 
only one number, he must, if possible, use 
the larger. When you cannot move at all, 
press "P" to pass the play to your opponent. 

If you roll doubles (the same number on 
both dice), you move according to the num- 
bers shown on one die four times. You can 
move the same man all four moves, or any 
other combination of men you choose. 

Any point on the playing board on which 
two or more men of the same player sit 
is called a blocked point. A blue man can- 
not land on a point blocked by red men, 



and vice versa. On a real board there is 
no limit to the number of men one player 
may have on a point. But since this is a 
"graphic" board, there is a limit of ten 
men per point. 

Since men of opposite colors cannot oc- 
cupy the same point, when a man lands 
on a point containing only one man of the 
other color, he removes the opponent's 
piece and takes his place. The removed 
man is placed on the "bar" (the middle 
strip that separates the board). Once one 
of your men has been placed on the bar, 
you must "enter" it into your opponent's 
inner table before you may move any of 
your other men. Entering is accomplished 
by moving the man on the bar to the point 
indicated by either of the two dice, as long 
as that point is not blocked. If you can- 
not enter because both points indicated are 
blocked, the turn passes to the other play- 
er. A "shutout" occurs when each point 
in your opponent's inner table is covered 
by at least two men. 

You cannot start removing your men 
from the board until all 15 of them are in 
your inner table. You may then remove 
your men from points corresponding to 
the numbers rolled or you may move your 
men within your inner table according to 
the dice. You must use your entire roll, 
if possible. This means that if you roil a 
five but have no men on your fifth point 
(counted from the right), you must take 
a man from your sixth point and advance 
him to the first one. You cannot remove 
a man if the point he is on is lower than 
the number you've chosen. 

There are a few options available dur- 
ing the game: <P>ass, <Q>uit and 
<S>ave Game. These options are self- 
explanatory. 

Programming Notes 

Double Six is written in BASIC but uses 
machine-language strings to speed up the 
initializing procedure. The game is ready 
to play almost instantly after typing RUN. 
I used the wide playfield to draw the game 
on a GRAPHICS 1 screen, using the un- 
seen parts of the playfield to store infor- 
mation about the game. That permitted me 
to greatly simplify the logic of the game. 
Also, the program contains plenty of REM 
statements for those of you who want to 
know how it ticks. f 

Pierre Roberge is a mechanical en- 
gineer who works for a company based in 
Quebec City. He's been programming his 
BOXEfor more than two years. 



MR REM KKMXKMXKKKXKXXXXICKKMKKXXKXXXICX 

hi- i. REM » DOUBLE 5IK « 

JO 2 REM » LISTtNG 1 « 

by Pierre Roberge » 



NZ 
ZD 
IN 
PM 
HU 



REM » 

REM * 

REM « 

REM * 



COPYRIGHT 1989 * 

BY ONftLOG COMPUTING * 

REM XXXXXXXXXKXKXXKKKKKXXXKKKXKXXX 

NN 8 REM 

3Z IB GOSUB 1B80:GET ttH2,A:IF fl<>79 THEM ■ 

164 
W 11 REM JBf LOfiD GftME *» 
JB 12 5L=N4:RW=7:5LS="PBffi"i GOSUB 152: IF . 

fi<>89 THEN 164 
UT 13 REM ** MftIM LOOP *X 
*»■ 14 W=N64»TURN:C5=32+MiCD=ll+H:CS0=96-M 

;CD0=75-W1PT=284-M:P0KE SC + K + V, PT+N2XCY .' 

=H2883 
YK 16 IF OK THEN GOSUB 112 
HO 17 REM ** CHOOSE POINT ** 
FT 18 TXTS = "¥»»3Qtffi£a»fl¥aniB»»*": GOSUB 1 

26 
ZO 20 POKE 77,N0:IF PEEK (764)<> N255 THEM 

128 
ZD 22 5T=PEEKt6i2+TURN) :Xfl=K:VA=V;K=K+tST 

=7J«tX<N153- tST = 113*CK>N3} : Y=Y + N24«t(5 

T = 133*tY=N264J-tST=H145»CY = N2883) 
IM 24 IF XOHft OR YOYfl THEN POKE SC+Kft+1^ 

ft,N194»fKfl=N9) 
GJ 26 CHfl=PT+M2»CY=N2883 SPOKE SC+K+V,CHd: 

IF PEEKC644+TURN) THEN 20 
KB 28 SOUND Ne,N16,Nie,N14:Pl=SC+N48;Xl=K 

:Y1=Y:I=I«N1; SOUND NO, NO, NO, NO 
RP 29 REM »» CHECK FOR ILLEGAL MOVE *» 
PH 38 IF (PEEKC5C+153 + N264XTURN) OH194 AN 

D XOM9) OR CX=N9 AND Y=H288-N24»TURN) 
THEN 86 
HE 31 REM ** FIMD TOP MAM ON PILE ** 
PC 32 DP=N24»t Cy=H288J-CY=N264)3 ;Pft=5C+X+ 

Y+DP*N5:P-PEEKCPflJ ;PB=tP=CD) 
OS 34 E=tINTCPA/'N2)=PA/N2) :C=ABSCtE=H83»t 

Y=N2643+E»tY=N2883-CX>N93) :IF POCS AN 

D POCD THEM 86 
ID 36 PA=PA-DP:P=PEEKCPA) :IF P=CS-PB»N21 

THEN 36 
MX 38 PA=PA+DP:P=PEEKCPA) IFOR I=M1 TO N4 : 

FOR J=N1 TO 2e:P0KE PA,P:NEXT JiFOR J= 

Nl TO 20:P0KE PA,N8:NEXT JlNEXT I 
ME 39 REM »» ERASE MAN FROM POINT ** 
OX 40 Pl^Pfl:CH=P SPOKE PA, tPEEKtPfl-tPA-CIM 

TttPA-SC)/N24J)»M24-SCJ-CJ*tX<>N9)+M19 

4»CX=M9)3»tPB=N8)+C5*PB 
TO 41 REM ** DRAM MAN ON POINTE R *» 
GU 42 POKE SC + X+Y,CS!TXTS="*»»*3nKH»B»a 

aEa»»»»"! GOSUB 128 
AB 43 REM X* CHOOSE A DIE ** 
PP 44 ST=PEEKC632+TURN) :ZA=Z!Z=Z+N24«CtST 

= 13)«CZ=M282)-CST=Ni4)*CZ=N306} JXCIMTC 

MAX/N2)=MAX/N2) 
ZH 46 IF ZOZA THEN POKE SCVZAjNlZB: POKE 

SC+ZA+N1,N126 
TI 48 POKE SC+Z,66:P0KE SC+Z+Nl, PT+N2X(Z= 

H386>:IF PEEKC644+TURN) THEN 44 
OG 56 SOUND H8,M16,Nle,H14:D=Dl»tZ=N282)+ 

D2»tZ=N386)+Nl:T=CTURN=N03-TURM 
HV 51 REM »» MOVE MAM IN INNER TABLE *X 
IS 52 SOUND N8,N8,Ne,N0:IF X+D>N15 AND Y= 

N288-N24«TURN THEN GOSUB 104 
UO 53 REM ** MOUE MAN OM BAR ** 
MO- 54 IF X=M9 THEN X = N16-D : D=:N1 : GOTO 58 
TU 55 REM *» WALK MAN ON BOARD :*X 
JL 56 A=CX=N3 AMD Y=N264+N24»TURMJ : DX= C CY 

=N288)-fY=H2641J»T» NOT A : DY=N24*T«A ; K 

A=X: YA=V:X=X+DX:X=X+DX»tX=N9J :Y=Y+DY 
VX 58 POKE SC+XA+YA,N194XCXA=N9) :POKE SC+ 

X+Y,CS:SOUND N0,N8,Ne,N8:S0UND N0,N8,N 

e,NO:FOR I=H1 TO S01NEXT I 
BR 68 D=D-NliIF D THEN 56 

RT 61 REM *« CHECK FOR REMOVAL OF MAN »» 
AD 62 IF X=H16 THEN PA=PAH:GOTO 72 
KM 63 REM «* PUT MAN ON POINT ** 
JX 64 DP = N24»CfY = N288J-(Y = N264)) :PA = 5C + X+;: 

Y + M4*DP;P=PEEK{PA) :IF P = CSO OR P=CDO T..' 

MEN 86 
IH 66 A = NO:PA = PA + DP:P = PEEKtPA) :PB=tP=CD) !:■' 

PC:: MOT fP=N2 OR P:=66J:IF PcCSO THEN G.'- 

OSUB 94 
AN 68 A=A+Nl!PA-PA-DP»PC!P=PEEKtPAJ ;IF P='-: 

CS-PBXN21 AND A<N5 THEM 68 
JJ 70 IF A = N5 THEN PA=SC+X+YtN51«DP : IF PB ■.■■ 

THEN 86 
AC 72 POKE SC + X+Y,N194»CX = N163 :FOR I=N1 T'-'. 

N4:F0R J=N1 TO MlOiPOKE PA,N8:NEXT J 

:FOR J=N1 TO N10 
MM 74 POKE PA,CS-M21*{PB OR A=N5]KCX<>Nie 

3:NEXT JiHEXT I:POKE SC+Z+Nl, 184 I ZB=Z ; 

Z=Z+N24»f (Z=N2823-eZ=H3e6J) 
YQ 75 REM «« PUT AN X OM USED DIE «« 
OG 76 IF IMTCMAX/N21 OMAX/N2 THEM POKE SC 

+Z,N1Z6;P0KE SC+Z+M1,M126:P0KE SC+ZB,M 
„p^lZe:POKE SC-I^ZBtMliNlZB . 



OCTOBER A.IM.A.L.a.Q. Computing 



19 






ca 
a 
o 

Q 



OK 77 REM ** CHECK FOR WINNER ** 

BT 78 IF K=N16 THEN X=K1:IF PflH>PBH+N14 T 

HEN 136 
EK 79 REM ** MEN IN INNER TftBLE «* 
IK 80 IF K>N9 AND K1<N9 «ND Y=N288-N24*TU 

RN THEN POKE SC+N24»TURN, PEEK t5C+N24*T 

URN)+H1 
OS 82 MflX::MflX-Nl:lF MAX THEN 18 
IH 83 REM i<* END OF MAIN LOOP if* 
FM 84 TURN- NOT TURN:POKE 5C+23, TURN : OK=N 

l:GOTO 14 
DJ 85 REM «* ILLEGAL MOUE ROUTINE ** 
K5 86 SOUND NO , N24, N6 , NIO : POKE SC+X+Y,N19 

4»(K=N9) SPOKE P1,CH:P0KE SC+Xl+Yl, CHA : 

POKE 5C+Z,N125:P0KE SC+Z+N1,N126 
PL 88 FOR I=N1 TO N24:NEXT I ! X=X1 1 Y=V1 : 50 

UHD NO, NB, NO, NO 

BL 90 TXT$ = "¥V|;»OiHHI<'fiBH2»i;**":G05UB 1 

26:F0R I=N1 TO N194:NEXT I : GOTO 18 
CT 91 REM «* QUIT ROUTINE ** 
RC 92 POKE 53277, NOiPOKE 53265, NO : POKE 55 

9,34:P0KE lO6,PEEKt7403 :END 
XT 93 REM ** BAR ROUTINE «* 
HL 94 A=N0:DPB=N24*CTURN-CTURN=NOJ) :PAB=S 

C+417-N264»TURN:PP=PEEKCPABJ :PBB=CPP=C 

DO):PCB= NOT CPP=N194) 
TM 95 A=A+Nl!PAB=PAB+DPB«PCB!PP=PEEKCPABJ 

:IF PP=C50-PBB*N21 AND A<N5 THEM 96 
WF 98 IF A=N5 THEN P AB=5C+417-N264»TURN ! I 

F PBB THEN POP :G0T0 85 
CK 100 IF X>N9 AND Y=N264+N24«TURN THEN P 

OKE SC+ HOT TURH»N24,PEEK(SC+ NOT TURN 

»N24J-N1 
ZB 102 POKE PA,NO:POKE PAB, CS0-N21WCPBB 

R A=N5) :PC=NO:RETURN 
XN 103 REM ** REMOVAL ROUTINE «* 
DX 104 PAH=SC+510-456»TURN:PBH=PAH 
AO 106 PAH=PAH+N1!IF PEEKCPAH)=CS THEN 10 

6 
VN 108 IF PEEK(SC+N24»TURN)<N15 OR X+D>N1 

6 THEN POP :G0TO 86 
YZ 110 RETURN 

TT 111 REM ** ROLL I NG DIC E RO UTIN E «* 
ST 112 TXTS="[i^SE*aHIH!»Cn<'EIHI]":G05UB 

126 

■jj^ 114 d1=intcrndcn0)»n6) 1 d2 = int crhd cnoj i^ 
■|n6}:for i=no to n2:a=u5rcadrcmove$] , ad 

■I R CDS) +D1»H9 + I*N3, 5C + 162 + I»N48, N3) 

TO 116 A=U5R(ADRCM0UE$) ,ADRCDS)+D2*N9+I«N 

3,SC+330+I»H48,N3) :NEXT I:S0UND NO, 150 

,N2,N8:S0UND NO, NO, NO, NO 
GF 118 IF PEEKC644+TURN) THEN 114 
KU 120 SOUND Ne,Nie,Nie,N14:MAX=N2+N2WCDl 

=D2):P0KE 764,N255:S0UND NB, NO, NO, NO 
UH 122 IF PEEK(644+TURN3=N0 THEN 122 
ZN 124 RETURN 

PZ 125 REM ** PRINT TEXT ROUTINE »» 
MR 126 A=U5RCADRtM0yE$) ,ADR(TXT$),SC+554, 

20) :RETURH 
DK 127 REM ** OUIT ** 
FK 128 GET nN2,A:IF A=81 THEN 92 
BR 129 REM ** 5AUE GAME ** 
NX 130 IF A=83 AND INT CMAX/N2) =MAX/N2 THE 

N 5L=N8:BW=ll:SLS="»aH3":G05UB 152:G0T 

18 
XO 131 REM K* PASS ** 
N5 132 IF A = 80 THEN SOUND NO, M14, 22 , NIO : P 

OKE SC+2B,N126:P0KE 5C+ZB+N1, H126 : GOTO 
84 
OE 134 GOTO 20 

BL 135 REM «* WINNER ROUTINE ** 
ZF 136 W=5C+514-456»TURN:WS=" ":IF T 

URN THEN »$="******" 
JP 138 FOR I=PAH TO PAH-N14 STEP -Ml : POKE 
I,N0:SOUND N0,I,N1O,N10:POKE I+456WC2 

»TURH-N1) ,N0 
VS 140 FOR J=N1 TO N16:NEXT J S NEXT I : SOUN 

D NO, NO, NO, NO 
LK 142 FOR I=N1 TO N6 : A=USR CADR (MOUE$) , AD 

RCWS),M,N6) :FOR J=N1T0N16 : NEXT J ; ft=U 

SR CADR tM0UE$) , ADR C"CnjnEn"J , W, N6J 
MI 144 FOR J=H1 T O N24!H E XT J iNEXT I 
AR 146 TXTS="»^^» «rZlt;»J ¥aPBRa» ¥":G0SUB 

126 
KY 148 GET «N2,A!lF A=89 THEN GOSUB 1172! 

OK=N0!GOTO 164 
IK 150 GOTO 92 

GM 151 REM *» LOAD/SAUE ROUTINE ** 
HX 152 TXT$=" ♦¥»»¥ail¥|^EV#*«" : TXTS tN 

5,N8J=5LS:G0SUB 126 STRAP 158 : CLOSE «N1 
: OPEN ttNl, SL, NO, "D : D0UBLE6 . SCR" 
TC 154 POKE SC+X+Y,N0:POKE 850,RW:P0KE 85 

2,PEEKt88) :POKE 853, PEEK (89} : POKE 856, 

N64:P0KE 857, N2 



156 A = USR CADR C"hhhSLUB"J , N16) : TURN = PEE 

KtSC+23J rCLOSE »N1 : OK=N0 : RETURN 

RV 158 SO UND NO , N64, NIO, NIO ; TXT$="maaii^ 

■»CS1»HH1B»": GOSUB 126:I=IANl:S0UND 

NO, NO, NO, NO 
LR 160 GET «N2,A:IF A=89 THEN 152 
ZP 162 RETURN 
SM 164 GOSUB 112 

UM 165 REM ** WHO GOES FIRST ROUTINE ** 
HS 166 TXT$="»»»»»»»»»» ma* ■»<»»» »" ! IF Dl = 

D2 THEN TXT$="»*»h»EKS»B*tIE»A»»»" 
VG 168 IF DKD2 THEN TXT$ C5, 8} ="*2>'.S" : TUR 

N=N0:POKE SC+K+Y,28+N2»CY=N288) 
XK 170 IF D1>D2 THEN TXT$ t5, 83 ="blue" : TUR 

N=Nl:POKE SC+X+Y,92+H2»(Y=N288) 
01 172 GOSUB 126!F0R I=NO TO N194:HEXT I: 

IF D1=D2 THEN 164 
EM 174 POKE SC+N282,N126;P0KE SC+N282+M1, 

126:P0KE SC+N306,N126:POKE SC+N306+N1, 

126:G0T0 14 
RD 999 REM »* INITIALIZE ROUTINE ** 
IM 1010 Nl=l:N2=2:N3=3:N4=4:N5=5:N6=6:N8= 

8 : N9=9 : N10=10 : H14=14 : N15=15 : N16=16 : N21 

=21 : N24=24 ! N48=48 : N64=64 : H126=126 
TJ 1012 N194=194:N255=255:N264=264:N282=2 

82 : N288=288 : N306=306 : K=N3 : Y=N264 : Z=N28 

2 
LH 1014 DIM TKTS(20) ,SL$CN4J,W$CN6J :CLOSE 

«N2:0PEH nN2,N4,N0,"K" 
JP 1015 REM *» MOUE CHARACTER SET ** 
VC 1016 RAMTOP=PEEKtl06)-N8:CHSET=RAMTOP» 

256 : A = USR CADR CMOVES) , 57344 , CHSET, 1024) 
FM 1018 POKE 106,RAMT0P-Nl:GRAPHICS 17:P0 

KE 559,N0:P0KE 756, CHSET/256 
PH 1019 REM ** CHANGE CHARACTER SET «* 
OG 1020 POKE N16,N64:P0KE 53774, N64 : A=USR 

CADR CTRANSFS) ,1022, 63, CH5ET+H8) 
YM 1022 DATA 0,102,102,102,102,0,102,0 
DZ 1024 DATA 254,254,254,254,254,254,254, 

254 
5R 1026 DATA 254,254,254,254,254,254,124, 

124 
HB 1028 DATA 124,124,124,124,124,124,124, 

56 
HA 1030 DATA 56,56,56,56,56,56,56,16 
LU 1832 DATA 16,16,16,16,16,16,16,16 
NU 1034 DATA 0,28,28,4,8,0,0,0 
CP 1035 DATA 124,254,254,254,254,254,254, 

254 
CB 1038 DATA 56,124,124,124,124,124,124,1 

24 
KJ 1040 DATA 15,56,56,56,56,56,56,56 
YM 1042 DATA 56,124,254,124,186,68,186,68 
XI 1044 DATA 0,0,0,0,0,28,28,56 
ID 1046 DATA 0,0,0,126,126,0,0,0 
MP 1848 DATA 0,0,0,0,0,28,28,0 
XS 1050 DATA 0,6,14,24,48,224,192,0 
HT 1052 DATA 0,124,198,202,210,226,124,0 
RG 1054 DATA 0,52,116,52,52,52,52,0 
FD 1056 DATA 0,124,206,28,55,0,254,0 
J5 1058 DATA 0,254,8,28,14,198,124,0 
BV 1060 DATA 0,6,54,102,198,246,6,0 
JA 1062 DATA 8,254,0,252,14,206,124,0 
SM 1064 DATA 0,28,64,220,206,206,92,0 
MX 1066 DATA 0,254,0,28,56,112,112,0 
OQ 1068 DATA 0,60,198,56,198,198,60,0 
RJ 1070 DATA 0,116,230,230,118,4,112,0 
AS 1072 DATA 0,0,28,28,0,28,28,0 
QX 1074 DATA 0,0,28,28,0,28,28,56 
HS 1076 DATA 16,16,56,56,124,108,198,130 
XZ 1078 DATA 0,0,126,126,0,126,0,0 
HF 1080 DATA 130,198,108,124,56,56,16,16 
YH 1082 DATA 0,124,230,206,28,56,0,56 
QR 1084 DATA 56,124,254,254,124,186,68,55 
HI 1086 DATA 8,24,12,198,198,246,198,0 
BS 1088 DATA 0,220,198,220,198,198,220,8 
FY 1090 DATA 0,28,198,192,192,198,28,0 
MU 1092 DATA 0,216,198,198,198,198,216,0 
RT 1094 DATA 0,222,192,216,192,192,222,0 
ZM 1096 DATA 0,222,192,192,216,192,192,0 
QM 1098 DATA 0,30,192,192,206,194,28,0 
BY 1100 DATA 8,198,198,222,198,198,198,0 
DQ 1102 DATA 0,244,48,48,48,48,188,0 
KS 1104 DATA 0,14,6,6,6,198,118,0 
XU 1106 DATA 0,204,216,192,216,204,198,0 
ZM 1108 DATA 0,192,192,192,192,194,222,0 
TH 1110 DATA 0,194,214,222,202,194,194,0 
FJ 1112 DATA 0,198,198,214,222,206,198,0 
MC 1114 DATA 0,124,230,194,194,230,124,0 
BY 1116 DATA 0,220,198,198,220,192,192,0 
CL 1118 DATA 0,28,198,198,198,204,54,0 
OL 1120 DATA 0,220,198,196,216,204,230,0 
GY 1122 DATA 0,124,226,120,30,142,124,0 
UN 1124 DATA 0,254,0,56,56,56,56,0 



OCTOBER A.N.A.L.O.Q. Computing 



xo 

BQ 
iflU 
GG 
NQ 
HF 
BC 
UF 
VN 
MP 

DT 
KE 
DC 
OJ 
FZ 
QS 
OO 
fpZ 
«0 



k 



tMI 



[GU 



1126 DflTfl 0,198,198,198,198,198,222,0 
1128 DflTfl 8,198,198,198,198,12,24,0 
1138 DATA 8,194,194,202,222,214,194,0 
1132 DflTfl 0,198,238,24,48,238,198,0 
1134 DftTfl 0,198,198,28,24,24,24,0 
1136 DflTfl 0,254,0,56,112,8,254,0 
1138 DfiTfl 28,56,118,238,160,86,40,20 
1148 DflTft 0,192,224,48,24,14,6,0 
1142 DATA 56,28,110,103,5,106,20,40 
1144 DOTfl 255,255,255,255,255,255,255, 
255 

1146 DATA 0,60,126,126,126,126,60,0 

1147 REM »* TURN ON P/M GRAPHICS ** 

1148 PMBA5E=CRAMT0P+N4)»256 
1150 POKE 54279, RAMT0P+N4 

1152 POKE 53277, N3:P0KE 623, N8 

1153 REM ** CLEAR P/M MEMORY ** 

1154 A=U5R( ADR CCLEAR$1,PMBA5E, 1024} 

1155 REM «* CREATE 3-[> BORDER ** 

1156 FOR I=N0 TO N48!P0KE PMBASE+423+I 
,63:NEXT I 

1158 POKE PMBASE+551,127:P0KE PMBASE+6 

03,N255:P0KE PMBA5E+679, 252 : POKE PMBA5 

E+731,N255 

1160 POKE PMBA5E+807,H255:P0KE PMBA5E+ 

859,N255!P0KE PMBA5E + 935, 240 : POKE PMBA 

5E+987,252 

1162 FOR I=N0 TO N2:P0KE PMBA5E+420+I, 

N48!P0KE PMBA5E+472+I,N48:HEKT I:POKE 

PMBA5E+475,M48 

1164 A=USRCADRCTRANSF$} , 1166, Nl, 532483 

1166 DATA 48,80,111,143,52,109,166,0,3 
,3,3,3,0 

1167 REM *» COLORS »* 

1168 A=U5R(ADRCTRANSFS) , 1170, Nl, 794) 

1170 DATA 6,6,6,6,70,134,0,8,10 

1171 REM »» DRAM SCREEN ** 

1172 5C=PEEK £88) +PEEK C89)*256 : A = USR CAD 
RCTRAH5FS) , 1174, N24, SO IPOKE 559, 47: RE 
TURN 

1174 DATA 5,0,0,32,32,32,0,228,239,245 

,226,236,229,0,243,233,248,0,96,96,96, 

0,0,0 

1176 DATA 5,126,126,126,126,126,126,12 

6,126,126,126,126,126,126,126,126,126, 

126 , 126 , 126,126 , 126,125,126 

1178 DATA 0,0,98,108,117,101,90,0,0,0, 

0,0,0,0,0,0,0,0,0,0,0,0,0,0 

1180 DATA 126,126,126,126,126,126,126, 

126,126,125,126,126,126,126,126,126,12 

6,126,126,126,126,126,126,126 

1182 DATA 126,126,126,126,66,96,125,12 

6,125,126,126,126,59,32,126,126,126,12 

6,126,126,126,126,126,125 

1184 DATA 126,126,254,254,254,254,254, 

254,254,254,254,254,254,254,254,254,25 

4,126,126,126,126,126,126,65 

1186 DATA 2,126,194,32,2,65,2,96,2,194 

,96,2,66,2,66,32,254,126,191,0,191,126 

,126,67 

1188 DATA 3,126,194,32,3,67,3,96,3,194 

,96,3,67,3,67,32,254,126,0,0,0,126,126 

,68 

1190 DATA 4,126,194,32,4,68,4,96,4,194 

,96,4,68,4,68,4,254,126,191,0,191,126, 

126,69 

1192 DATA 5,126,194,32,5,69,5,69,5,194 

,96,5,69,5,69,5,254,126,0,0,0,126,126, 

70 

1194 DATA 6,126,194,32,6,70,6,70,6,194 

,96,6,70,6,78,6,254,126,191,9,191,126, 

126,126 

1196 DATA 126,126,194,0,0,0,0,0,0,194, 

0,0,0,0,0,0,254,126,66,92,126,126,126, 

126 

1198 DATA 126,126,194,8,0,0,0,0,0,194, 

0,0,0,0,0,0,254,126,66,30,126,126,126, 

70 

1200 DATA 6,126,194,96,70,6,70,6,70,19 

4,32,78,6,70,6,70,254,126,191,0,191,12 

6,126,74 

1202 DATA 18,126,194,96,74,10,74,10,74 

,194,32,74,10,74,10,74,254,126,0,0,0,1 

26,126,73 

1204 DATA 9,126,194,96,73,9,73,32,73,1 

94,32,73,9,73,9,73,254,126,191,0,191,1 

26,126,72 

1286 DATA 8,126,194,96,72,8,72,32,72,1 

94,32,72,8,72,8,95,254,126,0,0,0,126,1 

26,66 

1208 DATA 2,126,194,96,66,2,56,32,66,1 

94,32,66,2,66,2,96,254,126,191,8,191,1 

26,126,126 

1210 DATA 126,126,254,254,254,254,254, 



I 

OV 

ZF 

RO 

LD 



254,254,254,254,254,254,254,254,254,25 

4,126,126,126,126,126,126,126 

1212 DATA 126,126,126,126,66,32,61,126 

,126,126,126,126,123,96,126,126,126,12 

6,125,126,126,126,126,126 

1214 DATA 126,126,126,126,126,126,126, 

126,126,126,126,125,126,126,126,126,12 

6,126,126,126,126,126,126,126 

1216 DATA 0,0,0,50,37,36,26,0,0,0,0,0, 

8,0,0,0,0,0,0,0,0,0,0,0 

1218 DATA 126,126,126,126,126,126,126, 

126,126,126,126,126,126,126,126,125,12 

6,125,126,126,126,126,126,126 

1220 DATA 0,0,0,0,167,161,173,165,154, 

0,46,165,183,0,175,178,0,47,172,164,0, 

0,0,0 



LISTING 2: BASIC 



HN 
BZ 
KO 
NZ 
ZD 
IN 
PM 
HU 
NN 
MY 



EB 
OC 
DC 
KN 
BM 
DI 
EK 

GD 
SZ 

GF 
DJ 

HV 
AU 
LC 
BA 



DOUBLE SIX 
LISTING 2 

by Pierre Roberge 

COPYRIGHT 1989 
BY ANALOG COMPUTING 



* 



REM MKXXXXKMKKKICWXKKXKKKKKKXKXKXMM 

1 REM » 

2 REM * 

3 REM * 

4 REM * 

5 REM * 

6 REM » 

7 REM XXXXXXXXXXXXXXXXXXXXXXXXKXXXXX 

8 REM 

10 CLOSE »1:0PEN S1,8,9,"D:D0UBLE6.CHR 

■':FOR 1 = 1 TO 397:READ A : PUT ttl,A:NEXT 

I! CLOSE tJl 

100 DATA 49,48,48,48,32,68,73,77,32,84 

,82,65,78,83,70,36 

102 DATA 40,49,49,53,41,58,84,82,65,78 

,83,70,36,40,49,44 

104 DATA 53,48,41,61,34,104,104,133,20 

9,104,133,208,104,104,133,205 

106 DATA 104,133,213,104,133,212,165,1 

36,133,203,165,137,133,204,160,2 

108 DATA 165,203,24,113,203,133,203,14 

4,2,230,204,160,1,177,203,217 

110 DATA 208,0,144,234,208,5,136,34,15 

5,49,48,48,50,32,84,82 

112 DATA 65,78,83,70,36,40,53,49,44,49 

,49,53,41,61,34,192 

114 DATA 255,208,242,160,4,169,0,133,2 

14,200,177,203,201,71,176,23 

116 DATA 201,44,240,21,233,48,133,215, 

165,214,10,133,214,10,10,101 

118 DATA 214,101,215,133,214,144,226,1 

60,0,132,207,160,9,165,214,145 

120 DATA 212,230,212,208,2,230,213,164 

,207,208,202,198,205,208,167,96 

122 DATA 34,155,49,48,48,52,32,68,73,7 

7,32,77,79,86,69,36 

124 DATA 40,52,51,41,58,77,79,86,69,36 

,61,34,104,104,133,211 

126 DATA 104,133,210,104,133,213,104,1 

33,212,104,133,214,104,170,208,2 

128 DATA 198,214,160,0,177,210,145,212 

,200,208,4,230,211,230,213,202 

130 DATA 208,242,198,214,16,238,96,34, 

155,49,48,48,54,32,68,73 

132 DATA 77,32,57,76,69,65,82,36,40,52 

,50,41,58,67,76,69 

134 DATA 65,82,36,61,34,104,104,133,20 

4,104,133,203,104,133,206,104 

136 DATA 133,205,166,206,160,0,169,0,1 

45,203,136,208,251,230,204,202 

138 DATA 48,6,288,244,164,205,208,240, 

198,204,160,0,145,203,96,34 

140 DATA 155,49,48,48,56,32,68,73,77,3 

2,68,36,40,53,52,41 

142 DATA 58,68,36,61,34,0,0,0,9,191,9, 

0,0,0,191,0 

144 DATA 0,9,0,9,8,0,191,191,0,0,0,191 

,0,0,0,191 

146 DATA 191,9,191,0,0,0,191,0,191,191 

,0,191,0,191,0,191 

148 DATA 8,191,191,0,191,191,0,191,191 

,0,191,34,155 



D 
O 

e 

B 
m 

M 



OCTOBER A.N.A.L.O.Q. CompuCing 




by Clayton W 



a 



n u 




So far, all the programs we've written 
have run from top to bottom, process- 
ing one instruction after another until 
they get to the last line of code. It is, 
of course, impossible to write full- 
sized programs without some way of controll- 
ing program flow. Therefore, we need to be 
able to construct loops so we can easily per- 
form repetitive processing. We also need to 
give our programs decision-making abilities. 
In this installment, we'll take a look at these 
two ways of controlling a program's order of 
execution. 

What Is a Loop, 
Anyway? 

Many times when writing a program, we 
come across a process that must be per- 
formed repeatedly. It's inefficient to write the 
same instruction over and over when we 
could just tell the computer, "Hey, you! Do 
this ten times!" A loop is a program construct 
that allows us to say just that to the computer. 
It gives us a way to send the program back 
to the same point over and over until certain 
criteria are met. 

For example, let's say we want to get three 



numbers from the user. We could do it this 

way: 

18 DIM NUMBERS t3) 

20 PRINT "ENTER THREE NUMBERS:* 

30 INPUT ft:NUMBER5tl3=ft 

40 INPUT A!NUMBER5{2J=ft 

50 INPUT A: NUMBERS t33=ft 

But by using a loop, we can get all three 
numbers with only a single INPUT state- 
ment. Here's the program above written us- 
ing a simple loop: 

10 DIM NUMBERS C3} 

20 X=0 

30 K=K+l:IF K=4 THEM GOTO 60 

40 INPUT O: NUMBERS (X)=a 

50 GOTO 30 

60 END 

Do you see the loop? Here we're using the 
variable X to both count the number of times 
we've passed through the INPUT statement 
and also as an index into the array NUM- 
BERS. But before I describe how this pro- 
gram works, there are a few new things you 
need to understand. 

Those of you who are used to seeing al- 
gebraic equations may find the statement 
X=X-M in Line 30 a little confusing. Just 
remember that, in BASIC, a statement like 



this is solved from right to left. In other 
words, first we add one to X, then give that 
value back to X. All we're doing is simply 
adding one to X. 

In Line 30 there's also an IF. . .THEN 
statement, which allows us to control pro- 
gram execution based on the values of varia- 
bles. If the expression immediately following 
the IF is true (in this case, X=4), the instruc- 
tions following the THEN (in this case, 
GOTO 60) are performed. If the expression 
is false, program execution drops down to the 
next line after the IF. . .THEN statement. 
Anything on the same line following the 
THEN will be ignored. 

And that brings us to the GOTO statement. 
Common sense has probably already told you 
what it does, but just for record let me state 
it here: The GOTO statement lets us send pro- 
gram execution to any program line we wish, 
simply by placing the line number after the 
GOTO. In other words, the statement GOTO 
60 will cause the program to jump to Line 
60 and continue execution from there. 

Now that we're familiar with these new 
statements, let's look at the program flow for 
the above example. We'll list the lines in the 



ss 



DCTOBER A.N.A.L.O.Q. Computing 




order the running program encounters 
them. Note that for some reason, Atari 
BASIC doesn't allow us to INPUT a value 
directly into an array. First we have to get 
the value into a regular numeric variable, 
then set the array element equal to that 
variable. 

Line 10: Dimension the array 
NUMBERS. 

Line 20: Set X equal to zero. 

Line 30: Add one to X, making it one. 
Is X=4? No, so drop down to the next 
line. 

Line 40: Get a value for NUMBERS(l) 
(remember: X=l) from the keyboard. 

Line 50: Go back to Line 30. 

Line 30: Add one to X, making it two. Is 
X=4? No. 

Line 40: Get a value for NUMBERS(2) 
(now X=2) from the keyboard. 

Line 50: Go back to Line 30. 

Line 30: Add one to X, making it three. 
Is X=4? No. 

Line 40: Get a value for NUMBERS(3) 
from the keyboard. 

Line 50: Go back to Line 30. 

Line 30: Add one to X, making it four. 
Is X=4? Yes! Jump to Line 60. 

Line 60: End program. 

Now, I'll admit that the second pro- 
gram, the one using the loop, is actually 
longer and harder to understand than the 
"non-loop" version. But what if we want- 
ed to get ten numbers from the keyboard? 
Or 50? Or 100? The fact is, we can per- 
form the loop any number of times 
without enlarging the program. Here's the 
same program, changed to get 1,000 num- 
bers from the keyboard: 

10 DIH NUMBERS (leeOJ 

20 K = 

30 K=X+l:IF X=10O1 THEH GOTO 68 

48 INPUT ft:NUMBER5CXJ=fl 

58 GOTO 30 

60 END 

If we had written this program using the 
"simple" method, without a loop, we 
would have needed 1,000 lines of INPUT 



IF WE HAD WRITTEN THIS 

PROGRAM USING THE 

'^SIMPLE" METHOD, 

WITHOUT A LOOP, WE 

WOULD HAVE NEEDED 

1,000 LINES OF INPUT 

STATEMENTS! NOW YOU 

CAN SEE THE REAL 

POWER OF 

A LOOP. 



statements! Now you can see the real pow- 
er of a loop. We can simplify the above 
program even further. BASIC has a spe- 
cial construction known as the 
FOR . . . NEXT loop, which lets us set up 
a loop without having to do all the house- 
keeping; that is, the program itself will 
keep track of the value of X, automatically 
incrementing it as needed and breaking 
out of the loop at the proper time. Here's 
our program again, written using a 
FOR... NEXT loop: 

10 DIM NUMBERS ClOOOJ 

20 FOR X=:l TO 1008 

30 INPUT A: NUMBERS CX)=A 

40 NEXT X 

50 END 

The first time the program gets to Line 20, 
it sets X to one. It then drops down to Line 
30, where it gets a value for NUMBERS(l). 
At Line 40, X is incremented (increased by 
one), and the program jumps back to Line 
20, where X is tested to see if it's larger than 
1,000. If it's not, the program again drops 
down to Line 30 to get a value for NUM- 
BERS(2). At Line 40, X is again increment- 
ed, and program execution jumps back to 
Line 20. The value of X is still less than 
1,000, so we go through the loop again. Even- 
tually, X will become 1,001. The value will 
be tested at Line 20, and because X is now 
out of the range of our loop, the loop is end- 
ed. Program execution automatically con- 
tinues at the statement knmediately following 



NEXT X, or in this case, at Line 50, 
where the program ends. 

We don't need to construct our 
FOR . . . NEXT loops exactly as shown in the 
first example. We could have put the entire 
program on one line. It would still operate 
properly: 

10 DIM NUMBERS (1888) : FOR X=l 
TO 1080: INPUT fl : NUMBERS tXJzA: 
NEXT XiEND 

This is hard to read, though. I'd write the 
above program like this: 

10 DIM NUMBERS (1008} 

20 FOR X=l TO 1000:INPUT A:NU 

MBER5(X)=A:NEXT X 

30 END 

By putting the loop all on one line, it can 
execute much faster. 

When using a FOR . . . NEXT loop, we 
don't have to "count by ones." By using the 
STEP keyword, we can make a loop count 
by whatever interval we want: 

10 FOR Xz8 TO 18 STEP 2 
20 PRINT X 
38 NEXT X 

This program will give us this output: 


2 
4 
6 
8 
10 

We can even have a loop that counts 
backwards: 

10 FOR X=10 TO 8 STEP -2 
20 PRINT X 
30 NEXT X 



The output from the above program would 



be: 



10 

8 

6 

4 

2 

8 

Conclusion 

Now that we know how to handle loops and 
IF. . .THEN statements, we have most of the 
tools we need to write fairly sophisticated 
programs. Still, BASIC is a rich language 
and there's a lot of territory left to cover. Next 
time, we'll learn about simple disk access and 
write a program that'll review everything 
we've learned so far. See you then. e\ 



Clayton Walnum is the executive editor 
of ST-LOG and ANALOG Computing, as 
well as the associate editor of 'Videogames 
& Computer Entertainment. 



OCTOBER A.N.A.L.O.G. Computing 



S3 




S49M 



YOU SAy_E_OVE_R $J75_ 

SUPER ATARI ST SOFTWARE PACKAGE 

TRACKER - ACI ION / STRAI EGY / 31) (;RAPIIK:S $44.95 REG. 

HIE (ilJII.D Of IIIIEVKS - GRAFIIK: IEXI AWENIURE $34.95 REG. 

HIE I^WN - GRAPIW IEXI ADVENI URE $34.95 RI';G. 

HIE SEN IRY - STRAIEGIC: / ( IIHSSLIKE $35.95 REG. 

goi,i»;n Kvni - grapiiks adventuri': (no i yhin(;!!) $.34.95 reg. 

SIARGLIUI';R - ACIION shoot-em up W/ FASl 3D GRAPIIK :S $39.95 REG. 




$99.95 

» COMPUTER «» PRINTER «» PLOTTER « 



INCLUDES: 

• 64K COMPUTER 

• 1020 PRINTER PLOTTER 



» 1200XL «» 1025 «» 1020 « 

• 1025 DOT MATRIX PRINTER (80 COL.) 

• PAC-MAN CARTRIDGE 



• BASIC WITH TUTOR SET 

ALL ITEMS ARE RECONDITIONED EXCEPT 1020 PRINTER 




INCLUDES: 

• 64K COMPUTER 

• 1020 PRINTER PLOTTER 



$59 

»_CqMPUJER <<>>.PLPJTER << 
» 1200XL «» 1020 « 



• BASIC CARTRIDGE 

• PAC-MAN CARTRIDGE 



ALL ITEMS ARE NEW EXCEPT 1200XL COMPUTER 




$99 



* 



» 810 « 



A SAVINGS 
OF $30 



INCLUDES: 

• 810 DISK DRIVE (RECON) 

• DOS 2.5 W/MANUAL 

• POWER SUPPLY AND CABLES 



* SPECIAL PRICE AVAILABLE 

ONLY WHEN PURCHASED WITH 

ABOVE SYSTEMS. ONE PER 

SYSTEM ONLY! 



vmM.ST 

Knight Ore $9.95 

Tracker $9.95 

Advanced Art Studio $9.95 
Guild of Thieves $9.95 

The Pawn $9.95 

Golden Path $7.95 

Universal Military 

Simulator $14.95 

Carrier Command $29.95 
Jinxter $9.95 

Sentry $9.95 

StarGlider $9.95 

•\l I.ITrMSRrO $'!995-$4995 



^"i- .Sf^ 







$29.95 



INCLUDES: 

• SLIME -INV. TO 

• CHICKEN PROGRAMING 

• BASIC • DONKEY 

• GORF KONG 
•JOURNEY •BANDITS 

TO THE • CLAIM 

PLANETS JUMPER 

•TURMOIL 'DELUXE 

• PAC-MAN INVADERS 



if0m 



$199 



DOUBLE DENSITY 

DUAL DISK DRIVE 

(2 DRIVES IN ONE CASE) 



AMMIWRITEM 



• 80 caxJMN nraTK-jG 

• r.DITABI,r. PRINTP.R DRIVRR 

• 30,000 WORD DICTIONARY 
•MAII.MRRGR 
•0N5XDISKETTR 



$49; 



AmB^ MEm m Amm^ momt mt jme wm)LE\ 



CONNECTS TO ANY COMPOSITE 

MONITOR 

80 CXX. D1SPI.AY 

PRINTER INTERFACE 



$79 



W/ 1025 PRINTER 
&. 1020 PLOTTER 



$99.' 



ATARIWRITER 80 
• ATARI XEP 80 
♦UOOXI. PRINTER SYSTEM 




$149 



1020 



COMPLETE WITH: 

• 2 PEN SETS 

• 1 Ra,I, PAPER 

• POWER SUPPIY & CABLE 

EXTRA PEN SETS 



COLOR PRINTER 
PLOTTER 



$14.95 



BRAND NKW 

COLOR $3.98 
BLACK $.89 



1200XL 64K COMPUTER 

C^ /i fl ^^ COLORS tn ^ fl 



1027 PRINTERS 1025 

LETTER QiTY 1027 IS FACTORY NEW! ROT MATRIX 
*C /Q rORYOUR8-BIT Ski #^ Q 

U5 / -7 1025 IS RECONDITIONED U5 U J' 



DISK PRWES 

r^' FOR 800/XIu/XE 



COMPLETE WHM: 

POWER SUPPLY 

I/O CABLE 

DOS 2.5 W/ 

MANUAI 



ATARI 810 
ATARI 1050 



$129.00 
$169.00 



RfCONDITlONrD 




$35 



THE mm 

LIGHT GUN 

FOR YOUR 800/XL/XE 



OR THE PACKAGE 

LIGHT GUN Cr'-i/\ffc 

CRIME BUSTERS ^ I I I M 
CROSSBOW KLf M.\J ^ 

BARNYARD BIATTTR 



HARDWARE & 
ACCESSORIES 



850 PRINTER INTERFACE $79.95 

1010 PROGRAM RECX3RDER $29.95 

TWO XJYSTICX SET $9.95 

SPACE AGE X)YST1CK $14.95 

WICO COMIvlAND X)YSTICK $24.95 

WICMTMEBO.SSJOYSrriOC $19.95 

ATARI TRACKBALI^ $9.95 

ATARI SX212 MODEM $89.95 

AVATEX 12001 IC MODEM $89.95 

DOS 2.5 W/ MANUAL $4.95 

600X1, (NO TransforiTieT) $19.95 

4OO,80O,850,L2OOXL Transfomer $14.95 

X1,/XE Transformer $19.95 



BOOKS - BOOKS 



101 PROGRAMING 
TIPS i TRICKS 
INSIDT ATARI BASK," 
DP RE ATARI 



$2.50 
$2 50 
$14 95 







CARTRIDGES FOR THE 800/XL/XE 






BASK C ARTRIDCil 


$4 95 










STAR RAIDERS II 


$19.95 


BASK 1 UTC* (2 BOOKS) 


$4 95 


FT 


$4 95 


ROBOTRON 


$19.9S 


DAVID'S MIDNIGI IT MAGK 


$1995 


gix 


$4.95 


FACEMAKER 


$4.95 


TENNIS 


$19.9J 


ARCHON 


$19.95 


TURMOIL 


$4.95 


MATII ENCOUNTER 


$7.95 


FINAL LEGACY 


$19.95 


KARATEKA 


$1995 


PAC-MAN (no box) 


$4.95 


DANCE FANTASY 


$8.95 


MARIO BROS 


$1995 


CHOPLIETER 


$1995 


DONKEY KONG (no box) 


$4.95 


LOGIC LEVELS 


$8.95 


DONKEY KONG JR 


$19.95 


GATO 


$24.95 


GORE (400,800) 


$4.95 


MEMORY MANOR 


$8.95 


JUNa.EHUNT 


$19.95 


ACE OF ACF.S 


$24.95 


(.1 IK-KEN 


$4.95 


LINKING LOGIC 


$8.95 


MOON PATROI, 


$19.95 


LODE RUNNER 


$24.95 


SLIME (400,800) 


$4.95 


DELTA DRAWING 


$9.95 


BATTLEZONE 


$19.95 


BARNYARD B1,ASTER (LG; 


$24.95 


CLAIM JUMPER 


$4.95 


IIEY DIDDLE DIDDLE 


$9.95 


rOOOFKillT 


$19.95 


DARK CHAMBERS 


$29.95 


DEIAJXE INVADERS 


$4.95 


GRANDMA'S HOUSE 


$9.95 


HARDBALL 


$19.95 


AIR BALL 


$2995 


KXJRNEY TO THE PLANETS $4.95 


FRACTION FEVER 


$9.95 


FIGHT NCI IT 


$19.95 


SUMMER GAMF.S 


$2995 


STAR RAIDERS 


$4.95 


AIPIIABET ZOO 


$9.95 


ONE ON ONE BASKETBALI 


$19.95 


CROSSBOW (LG) 


$29.95 


MISSI.E COMMAND 


$4.95 


ALF 


$9.95 


DEiSERT FALCON 


$19.95 


EAGLF.S NEST 


$29.95 


G/M.AXIAN 


$4.9S 


DIG DUG 


$14.95 


NECROMANCER 


$19.95 


CRIME BUSTERS (IXi) 


$29.95 


DEFENDER 


H9S 


MILUPEDE 


$14.95 


RE.SCUE ON FRACTAIUS 


$19.95 


MK-ROniJlR (datalxise) 


$.39.95 






SKY WRITER 


$14.95 


BALLBLAZER 


$19.95 










FOOTBALL 


$14.95 


BI.UEMAX 


$19.95 











DISK SOI rWARE FOR 


IHE 800/XL/XE 






DAVID'S MIDNIGI IT MAGIC 


$4.95 


CXJMMBAT 


$4.95 


ADVENTURELAND 


$4.95 


ALIEN AMBUSH 


$4.95 


REPTON 


$4.95 


PREPPIE 1 


$4.95 


PIRATE A DVF.h4TURE 


$4.95 


DISPATCH RIDER 


$9.95 


BANDITS (48K 400,800) 


$4.95 


PREPPIE II 


$4.95 


SECRET MISSION 


$4.95 


.SI LICX)N DREAMS 


$9.95 


a.AIM JUMPER 


$4.95 


THE COUNT 


$4.95 


VOODOO CA.STI.E 


$4.95 


VISICAI.C 


$29.95 


TIME WISE 


$4.95 


FREAKY PACrORY 


$4.95 


STRANGE ODYSSEY 


$4.95 


BOOKKEEPER 




C1«0SSC1IECX 


$4.95 


LASER HAWK 


$4.95 


REPTON 


$4.95 


W/ num keyi)ad 


$29.95 


MISSION ASTERaD 


$4.95 


CRYSTAL RAIDERS 


$4.95 


HULK 


$4.95 


1 lOME ACCOUTANT 


$29.95 



1010 PROGRAM 
RECORDER S29 9S 

.SAVE \NI) I OAI) YOU OWN ''^ Arf .^ • ^^ «_/ 



RFX ONI)l IIONKI) 



LIC.HT spn:D c 
DEVKLOPMENT KIT 



"S35.95 I 



SAN JOSE COMPUTER 



THE A T A R 



STORE 



640 BIOSSOM HIIJ. RD. SAN JOSF. CA 95037 
STORF (408) ??4-8575 • BBS (408) 924-905? • FAX (408) ??4-8574 



FAX US YOUR ORDER! 

FOR FASIER SERVICE PLEASE INCLUDE: 



• NAME 

•BILL TO ADDRESS 
•SNIP TO ADDRESS 
•PIKDNEfi 

• FrEM(S) YOU WISH 

TOPUROIASE 



VISA / MASTERCARD 
ORDERS ONLY 

CARD ADDRFuSS MUST MATCI I 
BILL TO ADDRESS 



(mm 224-8574 



SIIIPPINCi: ArX)$S.00TO ALL ORDERS. AIR AND INTER NAT10>4AI, SHIPPING EXTRA. THAT'S IT 

WARRAN lY: 90 DAY WARRANTY ON ALL ITEMS. lAX: CALIFORNIA RESIDENTS ADD 7% SALES TAX. 

PRKIWMKNli USE VKSA, MA.STERCARD, MONEY ORDER, CASHIER'S CHECK OR PERSONAL a I ECK. 
PERSONAL CI lECK MUST CLEAR PRBR TO SHIPMENT C.O.D.: CASH, CASI llER'S U lECK OR M.Q ONLY 

Prices sul))ect to change without notice. 

Brand and/ar product names are tradetnarlts or registered trademartcs of their re.spective holders. 

Ad produced on an ATARI .ST using CALAMUS and printed on an ATARI SLM804 Post.Script conii)atiWe Ia.ser printer 



CIRCLE H 102 ON RUOER'S SERVICE CARO 




A^fX 



episodes^ 
we have seen 
the crew of | 
the Enterprise 
struggle with 
computer 
m viruses, 
' computer 
pirates and 
advanced 
technology. 
Many of the 
scripts deal 
with today's 

problems 

projected into 

the Enterprise 

scenario. 

Written by 

futurists, the 

scripts are 

believable. 



Rights Reiarvad. 




*\s« 




part of the panel, you feel the reaction of the 
control. There is a depth dimensionality to 
the panel. 
Sternbach: The idea is part of a nano- 



technology. We take a piece of ',4 -inch Plexi- 
glas and lay it into the set to create a panel. 
If this were the world of the 24th century, we 
would be using a material that has 50 or more 
layers of materials, each layer performing a 
different task. For us to create this material 
today would cost an arm and a leg. But in 
the 24th century, this stuff comes off a roll! 

ANALOG: Can these panels project three- 
dimensional displays? 

Okuda: They can; however, the style of the 
operating system tends not to use this capa- 
bility. Budget limitations on the show have 
made us keep the displays two-dimensional; 
however, the panels could perform mul- 
tidimensionally. An example of this opera- 
tion might be a crew member looking at a 
projection of the harmonic subspace distor- 
tions of the ship. 

Sternbach: It could also be a two- 
dimensional display of a three-dimensional 
object. You have to remember that these 
panels are also used by nonhumans. They 
might not have depth perception and could 
not use the dmiensional display because their 
interoccular dimensions are too close for 
depth. 

Okuda: There is another part to this. If we 
are designing for the 24th century, we really 
don't know how a lot of three-dimensional 
imagery will appear when a user is looking 
into it. For example, if I had designed a lit- 
tle three-dimensional ball coming out of each 
button, I would be most concerned with how 
easily that control works. It might be that the 
panel would become too cluttered, or it might 
get in the way of another panel's use. 

ANALOG: One of the shows featured a 
computer virus attacking the Enterprise com- 
puter. What did you think about that episode? 




Okuda: I thought it was exciting, but the 
level of computer technology was not quite 
as advanced as it will really be that far into 
the liiture. The idea of an information-based 
weapon of that kind was pretty good. I 
thought the computer would be a little more 
protected than it appeared. 

Sternbach: That's really a problem of the 
time constraints we have working on a show 
like this. [The writers] might want to polish 
a script tor a couple of months, but they just 
don't have that kind of time. 

Time hasn't hindered these artists' creativi- 
ty. Okuda and Sternbach have miplanted their 
vision of computer/human symbiosis into the 
new series by 77)e Next Generation portray- 
ing computers and technology in a fimdamen- 
tally different way than did its predecessors: 
Okuda and Sternbach have added a friendly 
and open image to the touch panels aboard 
the Enterprise. 

If television is a reflection of the public per- 
ception, the technology on display in Star 
Trek: The Next Generation could well be right 
around the corner. After all, it was less than 
50 years ago that television brought us to the 
moon and Mars. By making it visual and 
responsive, the Star Trek vision may have 
brought us that much closer to new worlds 
and wonders. ,, , fl 



Frank Cohen is a programmer, author, 
graphic designer and music hobbyist. You 
may contact Frank directly on CompuSen>e J| 
(76004,1573) and GEnie (FRAN K.COHEN), ' 
or by writing to P.O. Box 14628, Long Be^h^ 
CA 90803-1208. p |P 



DCTDBEH A.IM.A.L.a.Q. Computing 




BIT NEWS 



Atarifest 

The Washington Area Atari Computer En- 
thusiasts has announced the fifth annual 
Washington, D.C.-area Atarifest, to be held 
at the Fairfax High School in Fairfax, Vir- 
ginia on Saturday and Sunday, October 7 and 
8. The show will feature seminars, demon- 
strations and exhibits designed to show how 
the Atari computers can be used in business 
and the home. Vendors interested in display- 
ing their products should contact Johnna Og- 
den at (703) 450-3992. People wishing to 
obtain general information should call John 
Barnes at (301) 652-0667. 



Quiet Those 
Printers ► 

The Silencer Mat is now available from 
JTB Communications. The mats come in a 
variety of sizes and are designed to reduce 
office noise produced by typewriters, com- 
puters and printers. They also protect desk- 
top surfaces from scratches. The Silencer Mat 
is available in charcoal-gray and features 
acoustical-foam lamination. 

Also available is the Mighty Mat series, 
which comes in blue, silver and red. Its 
.sponge rubber construction grips the desk 
surface, reducing vibration. 

JTB Communications 

222 W. Adams Street, Suite 589 

Chicago, IL 60606 

(312) 263-3063 

Peripiierai 
Switch Box ► 

The Robox X-Changer data switch allows 
two computers to electronically switch be- 
tween two different peripherals, such as serial 
or parallel printers, plotters and modems. 
Switching can be accomplished using a re- 
mote switch or by software. The X-Changer 
comes in two models, one for parallel devices 
and one for serial devices, the former featur- 
ing 36-pin Centronics connectors, the latter 
featuring DB-25 connectors. The unit lists for 
$129.95. 

Support Systems International Corp. 

150 South Second Street, Dept. CC 

Richmond, CA 94804 

(415) 234-9090 

Address Boole 

Twenty-Fifth Century has announced Mail- 
ing List Plus for the 8-bit Ataris. Names and 
addresses are typed on-screen just as they will 
appear on the labels, and two keys allow the 
user to move through the address database, 
making corrections wherever needed. Names 
and addresses can be categorized, allowing 
the user to group entries based on a keyword. 
This feature makes it possible to create labels 
for a specific subset of the address database. 

Entries can be searched on several fields, 
including first name, last name, city or zip 
code. Mailing List Plus will also print stan- 
dard labels one or two across and provides 
the ability for the user to adjust spacing to 
accommodate just about any label size. Mail- 
ing List Plus sells for $14.95, including labels. 

Twenty-Fifth Century 

234 Fifth Avenue, Suite 301 

New York, NY 10001 

(516) 932-5330 




' DESKTOP MATS FROM COMPUTER COVERUP 

The SILENCER Is one of two new series of mats tor, 
personal computers, typewriters 

and printers introduced j 

by Computer Coverup, Inc. % 




Frog Softvrare 

UltraBASIC has just released a group of 
four new programs for the Atari 8-bits. Su- 
perftvgs is a seven-game arcade pack that al- 
lows over 10,000 game variations. Superfrogs 
Funspeller features six one- or two-player 
educational games designed to help improve 
spelling skills. In Tank Math, players can try 
their hands at various math problems, includ- 
ing practicing Roman numerals. In the event 
of an incorrect answer, the program will work 
out the problem step by step. Track Stack 2.0 
will transfer up to 15 unprotected machine- 
language programs to a Track Stack disk, 
from which they can be loaded with the press 
of a single key. 

UltraBASIC, Inc. 

10 East 10th Street 

Bloomsburg, PA 17815 

(717) 784-4545 



OCTOBER A.N.A.L.O.G. Computing 



DELPHI 



Michael A. Banks 



hings have been a little strange late- 
ly; for two months this summer, I 
avoided almost all online activities. 
This is decidedly different for me be- 
cause I have been an intense tele- 
computing maven, buff, fan and devotee for 
nearly seven years. The main reasons behind 
all of this, which are a litde too personal and 
involved to go into here, were complicated 
by the fact that I had to finish a book on an 
extremely tight schedule. (Unfortunately, this 
resulted in no little suspense for ANALOG'S 
editor, and no Database DELPHI column 
for you— my apologies.) 

Thus, I couldn't afford the luxury of chat- 
ting with friends in conference on DELPHI. 
Nor could I dribble away precious minutes 
browsing DELPHI'S excellent travel service; 
forget planning a vacation— I was working to 
pay for last year's. 

I had no time to check out the databases 
in the Atari SIG, and I couldn't waste time 
swapping bad puns and outrageous gossip via 
E-mail. No cruising SIG Forums for interest- 
ing (or stupid) message threads either. (I 
didn't even read Forum messages to me, and 
delayed reading some E-mail for up as long 
as three weeks.) 

During one particularly intense 16-day 
period, I didn't log on to any online services 
or BBSs. 
Although I was too busy to think about it, 



I missed DELPHI. But it wasn't so much the 
habit of signing on and checking mail and 
such that I missed; it was the people. E-mail, 
messages, conferences— all the "people" ac- 
tivities on DELPHI were what I missed the 
most. 

When I finally started signing on to DEL- 
PHI regularly again, it was a strange 
feeling— not unlike visiting, for the first time 
in ten years, the town where you grew up. 

Things had changed. A lot. 

I found new files galore in the Atari SIG 
databases and encountered lots of new DEL- 
PHI members— many of whom were already 
old hands. The sheer quantity of new mes- 
sages in the Atari SIG Forum alone left me 
babbling in the dust— there were over 500 of 
them! 

I should have expected this. Like any com- 
munity, DELPHI evolves. Some of the evo- 
lution is the result of new services being 
added and existing services being improved. 
But most of it is human dynamics; our on- 
line world being as microcosmic as it is, 
change occurs much faster than in the "real" 



world— with the result that the changes in less 
than two months were almost staggering. 
When you can assimilate the changes one or 
two at a time on a week-to-week basis, it's 
not that noticeable. But being hit with two 
months' worth of changes all at once threw 
me off a little. 

All of this says something about the vitali- 
ty imparted DELPHI and its SIGs by its 
designers and members. 

It was an interesting sabbatical, though one 
I'm not likely to take again soon— just catch- 
ing up on E-mail and Forum messages took 
three hours. 

Despite (or perhaps because of) my odd 
sabbatical, I've a few new things to report. 
So.... 



Catching Up 

So, how did I catch up on what I'd been 
missing? Well, after wading through my 
E-mail, I hit the SIGs. I've already men- 
tioned the wealth of new Forum messages 
in the Atari SIG (there are some pretty 
good threads on gaming going on, by the 
way). What I didn't mention was how I 
dealt with them. 

I started to scan all new messages by 
headers using the DIR NEW command, 
but found it overwhelming (imagine try- 
ing to "scan" 20-odd screens of message 
headers!) So I narrowed them down by us- 
ing the DIR NEW TOPIC command. For 
example, I typed DIR NEW TOPIC 
TELE to display the headers for new mes- 
sages stored under the Telecommunica- 
tions topic. That made things a bit 
easier— there were only a couple of 
screens of headers, so I could scan for in- 
teresting subjects, which I duly noted and 
used to further trim the list with DIR 
NEW SUBJ < subject >. 

I did the same thing with other topics 
of interest, in most cases just using READ 
NEW SUBJ < subject > after I noted the 
interesting messages. (This proved to be 
easier than using DIR NEW SUBJ 
< subject > because I didn't have to try 



to remember or write down message 
numbers.) 

When I'd finished going through the Fo- 
rum, I typed 99999 to read the very last 
message in the Forum (some had been ad- 
ded while I was catching up!), just for the 
heck of it. 

As usual, I checked out the preview of 
the upcoming issue of ANALOG Com- 
puting, which is always in the Recent Ar- 
rivals database (type DA REC to access 
it, then press Return to see a directory of 
the newest items). I also scanned the pro- 
grams from the current issue (DA CUR, 
for the Current Issue database). 

If you find yourself offline for a couple 
weeks or more, try these "catch-up" 
techniques— they work! 

New News 

DELPHI has replaced the Associated 
Press newswire with United Press Inter- 
national (UPI) news and features. UPI 
offers a wide selection of interesting fea- 
tures and columns, in addition to the news 
coverage typical of newswire services. 

To check out the new UPI news service, 
type GO NEWS UPI at the Atari SIG 
menu. You'll see this menu: 



UPI News Henu! 




Hewsbrief 


Sports 


HuHan Interest Stories 


Entertainnent 


National Neus 


Heather 


International News 


Exit 


Business S Finance 





UPI) (Please select an iten]: 

Select an item, and you'll see a num- 
bered list of news stories and features; to 
read a story, type its number. 

Other items on the News menu- 
including Accu-Weather— remain un- 
changed. 

Se Habla Espariol? 

The DELPHI/Regional menu now 
boasts a fourth selection; in addition to 



versions of DELPHI for Argentina, Bos- 
ton and Kansas City, there's now a DEL- 
PHI/Miami selection, which is a 
Spanish-language regional operation in 
Florida. The entire service is in Spanish 
and was developed by SISCOTEL, the 
company that developed DEL- 
PHI/Argentina. 

To take a quick trip to Miami, type GO 
DEL MIAMI at the Atari SIG menu. (It 
helps to be able to speak Spanish, of 
course! Bienvenidol) 

Hot Tip: Meet tiie Pros 
in the SF SIG! 

Do you read science fiction and fanta- 
sy? Want to meet some of the foremost 
authors in the field? Check into DELPHI'S 
Science Fiction/Fantasy SIG (GO GR SF), 
where you'll find fascinating conversations 
among fans and writers in the Forum. You 
can also meet such popular writers as Pat 
Cadigan, Jack Chalker, Nebula-winner 
George Alec Ef finger, Mike Resnick, Joel 
Rosenberg and others "in person" during 
the SF SIG's weekly conference, which is 
held on Wednesday nights between 9:30 
p.m. and 11:00 p.m., EST. 

Poicer Tournaments 

DELPHI'S Trivia Quest has for months 
been one of the hottest online activities any- 
where, with truly intense competition for 
prizes, glory and honor. Now it appears 
that DELPHI'S weekly online poker games 
may equal or surpass TQ in popularity on 
an individual as well as tournament basis. 

If you haven't tried your hand at poker 
(a variation of seven-card stud), type GO 
ENT POKER at the Atari SIG's menu. 
Good luck! 

That's it for now. See you in conference! 
(Tuesday evening, 10:00 p.m., Eastern 
time; be there, or be an obtuse rectangle!) 



In addition to science fiction novels 
and books on model rocketry and other 
topics, Michael A. Banks is the author of 
DELPHI: The Official Guide and The 
Modem Reference, bothfi-om Brady Books. 
You can write to him via E-mail on DEL- 
PHI to membemame KZIN. C\ 



Attention 
Programmers! 



ANALOG Computing is interested in programs, articles, and software review sub- 
missions dealing with the Atari home computers. If you feel that you can write as well 
as you can program, then submit those articles and reviews that have been floating 
around in your head, awaiting publication. This is your opportunity to share your knowl- 
edge with the growing family of Atari computer owners. 

All submissions for publication, both program listings and text, should be provided 
in printed and magnetic form, Typed or printed copy of text is mandatory and should 
be in upper and lower case with double spacing. By submitting articles to ANALOG 
Computing, authors acknowledge that such materials, upon acceptance for publica- 
tion, become the exclusive property of ANALOG Computing. If not accepted for pub- 
lication, the articles and/or programs will remain the property of the author If submissions 
are to be returned, please supply a self-addressed, stamped envelope. All submissions 
of any kind must be accompanied by the author's full address and telephone number 



Send your programs and articles to: 

ANALOG Computing 

P.O. Box 1413-M.O. 

Manchester, CT 06040-1413 



DISK LISTING 



THE ANALOG «77 DISKETTE CONTAIHS 13 
MAGAZINE FILES. THEV ARE LISTED BELOW: 



SIDE l: 

FILENAME. EXT LANG. 



LOAD ARTICLE NAME 



DOUBLES 


.BAS 


BASIC 


LOAD 


DOUBLE SIX 


ERRMAN 


.OBJ 


ML 


(«4) 


ERROR MANUAL 


ERROR 


.MAN 






ERROR MANUAL DATA 


TXCRUNCH 


.BAS 


BASIC 


LOAD 


TX CRUNCHER 


CLOCK 


.BAS 


BASIC 


LOAD 


KEEPING BUSV 


SKULL 


.BAS 


BASIC 


LOAD 


SKULL ISLAND 


STRING! 








SKULL ISLAND DATA 


STRING2 








SKULL ISLAND DATA 


FASTMOUE 


.BAS 


BASIC 


LOAD 


FAST MOUE DEMO 


SIDE 2: 










FILENAME 


EXT 


LANG. 


LOAD 


ARTICLE NAME 


ERRMAN 


MG5 


MAC/G5 


LOAD 


ERROR MANUAL SOUR( 


FASTMOUE 


M65 


MAC/65 


LOAD 


FAST MOUE SOURCE 


MLEDITOR 


BAS 


BASIC 


LOAD 


M/L EDITOR 


EDITORII 


LST 


BASIC 


ENTER 


BASIC EDITOR II 


TO LOAD VOUR 


ANALOG DISK 





1) 



INSERT BASIC CARTRIDGE CNOT REOUIRED FOR XE 
OR XL COMPUTERS! , 

2) TURN ON DISK DRIUE AND MONITOR. 

3) INSERT DISK IN DRIUE. 

4) TURN ON COMPUTER. CXL AND XE OWNERS: DO NOT 
HOLD DOWN OPTION KEV!) 



WARNING: BEFORE VOU RUN A PROGRAM, READ THE 

APPROPRIATE ARTICLE IN THE MAGAZINE. 
FAILURE TO DO SO MAV YIELD CONFUSING 
RESULTS. 

NOTE: ONLV PROGRAMS WITH THE .BAS, .COM 
OR .OBJ EXTENSION MAV BE RUN FROM 
THE MENU. OTHER PROGRAMS SHOULD BE 
LOADED AS INSTRUCTED IN THE LOADING 
NOTES AND MAV REQUIRE ADDITIONAL 
SOFTWARE AS LISTED BELOW. HOWEUER, 
VOU SHOULD HOT ASSUME THAT EUERV FILE 
WITH THE PROPER FILE EXTENSION WILL RUN 
FROM THE MENU. YOU MAY HAUE TO MOUE 
CERTAIN PROGRAMS TO A DIFFERENT DISK 
TO OBTAIN CORRECT RESULTS. 



EXT DESCRIPTION 



.M65 REQUIRES THE MAC/G5 ASSEMBLER 

.AMA REQUIRES THE ATARI MACRO ASSEMBLER 

.ASM REQUIRES THE ATARI ASSEMBLER/EDITOR 

.ACT REQUIRES THE ACTION! CARTRIDGE 

.LGO REQUIRES THE ATARI LOGO CARTRIDGE 

.SVN REQUIRES THE SYNAPSE SVH ASSEMBLER 



LOADING NOTES 



LOAD BASIC PROGRAM: 
ENTER BASIC PROGRAM: 
LOAD MAC/65 PROGRAM: 
ENTER ASM/ED PROGRAM: 
LOAD LOGO PROGRAM: 
LOAD SYN/AS PROGRAM: 



LOAD "D:FILENAME.EXT" 
ENTER "D:FILEHAME.EXT" 
LOAD «D:FILENAME.EXT 
ENTER «D:FILEHAME.EXT 
LOAD "D:FILEHAME.EXT" 
LOAD "D:FILENAME.EXT" 



Kl: SEE ACTION! MANUAL. 

«2: SEE ATARI MACRO ASSEMBLER MANUAL. 

«3: MAV ALSO BE LOADED FROM DOS USING THE "L" 

OPTION OF THE DOS MENU. 
t»4: THIS FILE SHOULD BE TRANSFERRED TO ANOTHER 

DISK AND RENAMED "AUTORUH . SYS". 
»5: READ THE APPROPRIATE ARTICLE FOR INSTRUCTIONS 

ON USING THIS FILE. 



OCTOBER A.N.A.L.a.a. Computing 



if you solved last issue's multi-byte math 
problems, give yourself a pat on the 
back. Successful completion of these 
programming puzzles indicates that 
you're well on your way to becoming 
proficient in 6502 assembly language. 

Whether you solved the problems or not, 
take a look at the following possible solu- 
tions. There are many ways to solve any 
programming problem, and these examples 
may show you a different approach. 



tained in NEWBAL is stored in low-order to 
high-order format, just like OLDBAL and 
WITHD. 

IF THE INC OPERATION 

IS PERFORMED ON A 

BYTE CONTAINING $FF, 

THE BYTE'S VALUE 

WILL '^WRAP 

AROUND^' TO ZERO. 



i 


le 


K=$600 


'i 


1^ 


28 


5ED 


; DECIMAL MODE 


\ 


30 


LDA OLDBAL 


;GET low BYTE 


f 


40 


SEC 


; FIRST SUBTRACT 


t. 


50 


SBC HITHD 


,' SUBTRACT LOW 


\' 


60 


STA HEWBAL 


; STORE RESULT 


(•' 


70 


LDA OLDBAL+1 


;GET MED BYTE 


! 


80 


SBC WITHD+1 


; SUBTRACT MED 


\ 


50 


STA NEWBAL+1 


; STORE RESULT 


h. 

!'■■ 


eiee lda oldbal+2 


;get hi byte 


h 
1 


0118 SBC ttO 


J SUBTRACT DUMMY 




0120 5Tfl NEMBAL+2 


; STORE RESULT 


, 


0130 BRK 


:ALL DONEf .^m 


! • 


0140 OLDBAL .BYTE $73, $86, $10 ''^^ 


!■ 


0150 HITHD .BYTE $85, $42 ^^H 


I 


0160 MEWBAL »=»+3 


^^ 




0170 .END 


^ 



The above shows the solution to the first 
problem given last month. You were asked 
to subtract the two-byte BCD variable 
WITHD from the three-byte variable OLD- 
BAL, placing the result in the three-byte vari- 
able NEWBAL; OLDBAL = 108673 and 
WITHD = 4285. 

As you can see, both OLDBAL and 
WITHD are defined using the .BYTE direc- 
tive. Standard data-storage formats are used, 
so the values are defined from low-order to 
high-order. That is, 108673 is defined as 
.BYTE $73,$86,$10. The variable NEWBAL 
is simply set up as *=*-l-3, reserving three 
bytes for the result of the operation. 

The program itself uses the usual multi- 
byte subtract structure for the first two sub- 
tract operations. The third subtract uses a 
"dummy" value of zero for the third byte of 
WITHD, since it is one byte shorter than 
OLDBAL. This ensures that any borrows 
from lower-order bytes will be processed 
properly. 

Try executing this program on your com- 
puter. After it is finished, examine the three- 
byte NEWBAL to be sure it contains 104388 
(108673-4285). NEWBAL is located at mem- 
ory location $0622-0624. If you display these 
locations, you will see something like this: 

0622 88 43 10 

You will note that the number 104388 con- 



Solution Two 

The second problem I assigned last month 
asked you to subtract each byte of the ten- 
byte TABLE2 from the corresponding byte 
of TABLEl, placing the results in the ten-byte 
TABLE3. The initial values for TABLEl and 
TABLE2 are: 



TABLEl .BYTE $10, $18, $40, $86, $9A 
.BYTE $A0,$BC,$C0,$F0,$F8 

TABLE2 .BYTE $00, $08, $14, $2F, $9A 
.BYTE $90,$0B,$22,$65,$78 

If done properly, TABLE3 should contain 
the following values when the program is 
finished: 



$iO,$lO,$2C,$57,$00,$lO,$Bl,$9E,$8B,$80 




BY TOM 



A possible solution to this problem is 




shown here: 




10 


»=$600 




20 


CLD 


; BINARY MODE 


30 


LDX «9 


;10 BYTES TO DO 


40 SUBLP 


LDA TABLEl, K 


;get byte 1 


50 


SEC 


;5INGLE BYTE! 


60 


SBC TABLE2,K 


; SUBTRACT BYTE2 


70 


STA TABLES, H 


;AND STORE IT 


80 


DEX 


;NEKT BYTE 


30 


BPL SUBLP 


;D0 ALL 10 BYTES 


0100 


BRK 


;ALL DONE! 



0110 TABLEl .BYTE $10, $18, $40, $86, $9(1 

0120 .BYTE $AO,$BC,$C0,$F0,$F8 

0130 TfiBLE2 .BYTE $00 , $08, $14, $2F, $9A 

0140 .BYTE $90,$0B,$22,$65,$78 

0150 TABLES *=lt+10 

0160 .END 




As you can see, this problem can be solved 
by simply indexing through all ten bytes of 



result of the operation. Here is an example 
of the INC operation: 




HUDSON 



P^ '» 


*=$0600 




ir 28 


LDA ttS 


;5 IN ACCUMULATOR 


W Z0 


STA UALUE 


JAND IN VALUE 


i 40 


INC UALUE 


; UALUE = 6 


■ 50 


INC VALUE 


;UALUE = 7 


K ^0 


INC UALUE 


; UALUE = 8 


1 70 


BRK 


;ALL DONE! 


■ 80 VALUE *=«+! 




1 '« 


.END 





the tables in the loop SUBLP. Within this 
loop, the X register points to the desired byte 
of each table. Each time the loop is execut- 
ed, the byte from TABLE2 is subtracted from 
the corresponding byte of TABLEl, and the 
result is placed in the proper location in 
TABLES. Note that each subtract is preced- 
ed by the SEC (set carry) instruction, so that 
the subtracts will be treated as single-byte 
operations. 

Ups and Downs 

There are two handy instructions we 
haven't covered yet that can sometimes be 
considered math instructions. These are INC 
(increment memory by one) and DEC (decre- 
ment memory by one). 



This program will place the value five in 
the accumulator and the location labeled 
VALUE. It then increments VALUE three 
times. When finished, the accumulator will 
still contain five, but VALUE will contain 
eight. 

If the INC operation is performed on a byte 
containing $FF, the byte's value will "wrap 
around" to zero. Note that this instruction is 
not a true math instruction because the car- 
ry resulting from the byte wraparound is not 
shown in the status flags. 

The DEC instruction is similar to the INC 
instruction, but operates in reverse. Instead 
of adding one to the value of the byte, DEC 
subtracts one. Here is an example of the use 
of the DEC instruction: 



10 *=S608 

20 CLD 

30 LDA ns 

40 5TA COUNT 

50 LDA tt? 

60 5TA ADDUAL 

70 LOOP LDA ADDUAL 

80 CLC 

90 ADC ADDUAL 

0100 STA ADDUAL 

OilO DEC COUNT 

0120 BNE LOOP 

0130 BRK 

0140 ADDUAL «=»+l 

0150 COUNT *=;»+l 

0168 .END 



; BINARY MODE 

JSET COUNTER. . . 

J TO 5 

JSET TO ADDUAL 

JTO 7 

;GET ADDUAL 

; SINGLE-BYTE ADD 

;ADD TO ITSELF 

JSAUE RESULT 

;HIT ZERO YET? 

;N0! LOOP BACK 

;ALL DONE! 




INC n (ZERO PAGE) 

INC nn (ABSOLUTE) 

INC n,X (ZERO PAGE INDEXED X) 

INC nn,X (INDEXED X) 

DEC n (ZERO PAGE) 

DEC nn (ABSOLUTE) 

DEC n,X (ZERO PAGE INDEXED X) 

DEC nn,X ffNOEXED X) 

The INC instruction simply adds one to the 
value contained in the memory byte refer- 
enced and places the result back into the 
memory location. The accumulator is not af- 
fected, but the Sign and Zero flags reflect the 



Here we're using the variable COUNT as 
a simple counter to control the addition of 
ADDVAL. We will add ADDVAL to itself 
five times. When finished, ADDVAL will be 
multiplied by 32. Let's walk through this 
example. 

Line 20 clears the decimal mode so that 
we'll be working in binary mode. 

Lines 30-40 initialize COUNT to five. 

Lines 50-60 initialize ADDVAL to seven. 
When complete, this program will multiply 
seven by 32, with a result of 224 ($E0) in the 
accumulator. 

Lines 70-100 add ADDVAL to itself, plac- 
ing the result back in ADDVAL. This has the 
effect of multiplying ADDVAL by two each 




WHEN YOU GET 

DEEPER INTO 

ASSEMBLY LANGUAGE, 

YOU'LL NEED TO 

MANIPULATE BYTES 

IN WAYS THAT 

BASIC CAN'T. 



time it is done. 

Line 110 decrements COUNT by one. 
When COUNT reaches zero, the Zero flag 
will be set. This will be our signal to stop. 

Line 120 checks the Zero flag to see if all 
five multiplies have been done. If the Zero 
flag is not set, the program will branch 
(BNE) back to the label LOOP. 

Line 130 breaks the program when all five 
iterations of the loop are complete. 

Lines 140-150 define the one-byte storage 
areas ADDVAL and COUNT 

As you can see, the INC and DEC instruc- 
tions can come in handy when you need a 
counter or want to add or subtract witliout 
affecting the accumulator. We have used the 
X and Y registers to perform counter func- 
tions, but if these registers are in use, you 
can always set up a byte and use the INC and 
DEC instructions instead. 

Bit-Flipping 

When you get deeper into assembly lan- 
guage, you'll need to manipulate bytes in ways 
that BASIC can't. Now we'll look at four in- 
structions that allow a wide variety of ways 
to manipulate and test the contents of the ac- 
cumulator. These instructions are AND, BIT, 
ORA and EOR. 

BYTE 1: eiioieii 

AND BYTE 2: 10110061 



RESULT: 



oeieeeei 



The above shows how the AND function 
works. As you can see, two bytes are used 
as inputs to the function. The corresponding 
bits of these two bytes are examined. If the 
bit of the first byte is one AND the bit of the 
second byte is one, the result for that bit will 
be one. Otherwise, that bit of the result will 
be set to zero. This process is repeated for 
all eight bits. 

In 6502 assembly language, the AND func- 
tion has the following eight formats: 

AND -n (IMMEDIATE) 

AND nn (ABSOLUTE) 

AND n (ZERO PAGE) 

AND (n,X) (PRE-INDEXED INDIRECT) 

AND (n),Y (POST-INDEXED INDIRECT) 

AND n,X (ZERO PAGE INDEXED X) 

AND nn,X (INDEXED X) 

AND nn,Y (INDEXED Y) 

In each of these formats, the accumulator 
is ANDed with the memory byte indicated 
in the operand. The result of the AND func- 
tion is placed in the accumulator. The Sign 
and Zero flags are set according to the result. 

The AND function is most often used to 
mask off certain bits of the accumulator or 
test bits to see if they are on. 

Let's say you want to get a random num- 
ber that does not exceed seven. You could use 
the code: 



GETRND LDfl RANDOM 
CMP »8 
BC5 GETRND 



This code gets a random number and 
checks to see if it is greater than seven. If 
it is, the program loops back to GETRND 
and tries again. This routine works, but it may 
need to try several times before it gets a good 
value. 

We can perform the same function easily 



with the AND instruction. By using the AND 
instruction, only one try is necessary. It even 
takes less memory than the previous exam- 
ple. The code is: 

LDA RANDOM 
AND tt07 



This code masks the contents of the ac- 
cumulator with the value seven. Below are 
three possible outcomes of the procedure. As 
you can see, none of them exceeds seven. 

BYTE: leeiiiei 
AND MASK: eeeeeiii 



RESULT: oeeoeiei 



BYTE: iiiieiii 
AND mask: 88800111 



RESULT: 80888111 



BYTE: 88818880 
AND MASK: 88888111 



RESULT: 88888088=0 

This is just one example of the use of the 
AND operation. We'll cover more uses in the 
future. 

A companion to the AND function is the 
BIT (bit test) instruction. It performs almost 
the same function as AND, but changes only 
the status flags. BIT does not affect the con- 
tents of the accumulator. The primary func- 
tion of the BIT operation is to test the contents 
of the accumulator. BIT has the following 
formats: 

BIT nn (ABSOLUTE) 
BIT n (ZERO PAGE) 

Besides not changing the accumulator as 
a result of the AND operation, BIT handles 
the status flags differently. The ZERO flag 
is handled the same as AND. The SIGN and 
O'VERFLOW flags are set to bits seven and 
six of the operand, respectively. This is a 



OCTOBER A.IM.A.I..a.a. Computing 



strange twist, and I've not yet encountered 
a situation where I've used this odd flag set- 
ting. The following code shows a typical use 
of the BIT instruction. 

LDA BYTE 
BIT TE5TBT 
BNE BITON 



BITON 



BYTE 
TESTBT 



.BYTE 
.END 



$01 



This code uses the bit mask TESTBT to see 
if the one bit of the memory location labeled 
BYTE is set. The value contained in BYTE 
is placed in the accumulator, then the BIT in- 
struction is executed. Since TESTBT is the 
location used by the BIT operand, the ac- 
cumulator is set, and the result of the BIT 
operation will be a not-equal condition. In 
this case, the BNE instruction would cause 
the program to branch to the location BITON. 
Otherwise, the program would fall through 
to the code after the BNE instruction. 

I personally don't use BIT instructions 
much. Unfortunately, the designers of the 
6502 didn't allow for an immediate format 
of this instruction. As a result, you must set 
up all the masks you use somewhere in mem- 
ory, making the operation a bit more cum- 
bersome. 

This OR That 

Another bit-manipulating instruction used 
fairly often is the ORA (OR accumulator) 
operation. The formats of this instruction are: 

\ 

ORA -n (IMMEDIATE) V 

ORA nn (ABSOLUTE) 

ORA n (ZERO R\GE) 

ORA (n,X) (PRE-INDEXED INDIRECT) 

ORA (n),Y (POST-INDEXED INDIRECT) 

ORA n,X (ZERO PAGE INDEXED X) 

ORA nn,X (INDEXED X) 

ORA nn,Y (INDEXED Y) 

Unlike the AND operator, which only sets 
the result bit when both input bits are one, 
the OR operator sets the result bit when ei- 
ther input bit is one. The following example 
shows how the OR function works: 

BYTE 1: 10118110 
OR BYTE 2: 01010010 



ANOTHER 

BIT-MANIPULATING 

INSTRUCTION USED 

FAIRLY OFTEN 

IS THE ORA 

(OR ACCUMULATOR) 

OPERATION. 

As you can see, the OR operation sets the 
result bit if either bit one OR bit two is set. 
If both bits are off, the result bit will also be 
off. Like the AND operation, the ORA oper- 
ation affects only the Sign and Zero flags. 

The OR operation is used to turn on specif- 
ic bits in a byte, most often in graphics han- 
dlers. The following code demonstrates how 
the OR instruction works. 

*=$6O0 
LDA »$4C 
ORft «$11 
ORA 0R3 
BRK 
0R3 .BYTE $80 
.END 

Line 20 loads the accumulator with $4C 
(01001100 binary). 

Line 30 ORs the accumulator with the con- 
tents of the memory location 0R3. Since ORS 
is defined as $80, the accumulator will be 
OR'd with 10000000 binary. After this in- 
struction is executed, the accumulator will 
contain $DD (11011101 binary). 

Line 50 stops the execution of the program. 
At this point you can see that the accumula- 
tor contains $DD. 

An ANALOG Exclusive 

The last accumulator manipulation instruc- 
tion we're going to look at this time is EOR 
(exclusive-OR). This instruction works like 
OR except that when both input bits are set, 
the result bit will be turned off. The follow- 
ing example shows how EOR works: 



BYTE l! 
EOR BYTE 2! 



10110011 

10011010 
10 1 



No matter what the contents of byte one, 
if it is exclusive-OR'd with $FF (binary 
11111111), the result of the operation will be 
the mirror-image of the first byte. The 6502 
code necessary for this operation is: 

LDfl tt$Bl 
EOR tt$FF 

What if we only want to flip a certain bit? 
The following example shows the flipping of 
only the four bit of byte one: 

BYTE 1: 10110001 
EOR BYTE 2: OOOOOIOO 



;$4C IN ACCUN, 
;0R WITH $11 
;0R MITH $80 
;ALL DONE! 



RESULT: 



leiioiei 



RESULT: 10 

The EOR instruction is commonly used in 
graphics routines and for flipping the setting 
of bits in program flags. Let's see how the 
EOR instruction lets us flip bits. The follow- 
ing example shows the EOR ftinction flipping 
all the bits of a byte to the opposite binary 
settings: 



RESULT: 



11110110 



BYTE l; 
EOR BYTE 2: 

RESULT: 



10110001 
11111111 

01001110 



As you can see, the bit has been flipped 
to a one. The equivalent 6502 code for this 
example is: 

LDA n$Bl 
EOR n$04 

The EOR operation is easy to use. All you 
need to do is determine which bits you want 
to flip and exclusive-OR the accumulator with 
the appropriate byte. Like the AND and ORA 
operation codes, EOR sets the Sign and Zero 
flags according to the result of the operation. 

Problem Time. 

Here are some good bit-manipulation prob- 
lems for you to solve for next month. 

In each of the following problems, you are 
given bit patterns before and after a bit- 
manipulation operation. You must determine 
(1) the operation (AND, ORA, EOR) and (2) 
the second bit pattern used to obtain the re- 
sult. Some problems have two possible an- 
swers. These are indicated with a (2) to the 
right of the problem. If you've read careful- 
ly, these should be a snap to solve. 

BYTE 1 OPN BYTE 2 RESULT flNS 



01000011 
11001011 
11110000 
01010101 
11801000 
11111111 
00100100 
01800111 



01000001 C2] 
10100010 
01000000 C2) 
11111111 C2) 
01111100 
11110001 C21 
10111000 
00010018 



Until next time, try developing some prob- 
lems of your own. It's a good idea to try some 
addressing modes other than the ones used 
in this column. Next month we'll find out 
how to do simple multiplication and divi- 
sion! n 



OCTOBER A.IM.A.L.O.B. Computing 




by John W. Little 

To see Fast Moire in 
action, type in Listing 

1, save and run it. 

You'll see four players, 

two cars and two 

arrows, after the 

period described on 

the screen, the arrows 

will move by 

themselves, turning to 

face the directions in 

which they are 

moving. 




his is a machine-language routine that 
will move players smoothly at speeds 
I can't even imagine a use for. The 
speed is completely variable, so it 
should be able to accommodate just 
about any need. An important benefit of the 
speed capability of this routine is its ability 
to move all four players, quickly and smooth- 
ly, at the same time. The movement routine 
is completely machine language and runs 
during the Vertical Blank Interrupt; only the 
setup is in BASIC. This allows those un- 
familiar with assembly language to use it, and 
also allows changing of parameters while the 
BASIC program is running. It is compatible 
with all the 8-bit Ataris and is completely 
relocatable, except for the pointer tables in 
page six and three bytes in page zero. 

Using Fast Move, the BASIC programmer 
can: 

1) Move different players at different 
speeds; 

2) Change player speed, while the program 
is running, from the keyboard or from with- 
in the BASIC program; 

3) Choose horizontal or vertical (or both) 
wraparound or have the players stop at user- 
defined screen limits; 

4) Change players' shapes to match the 
directions in which they are moving; 

5) Combine players zero and one or two 
and three to make multicolored players; 



6) Control player movement by poking 
memory locations with "joystick-type" values 
instead of using joysticks; 

7) Choose single- or double-line reso- 
lution. 

The first time you use Player/Missile (P/M) 
graphics, it seems like a complicated proce- 
dure; so many variables to define, so many 
things to remember, not to mention the fact 
that you first have to create the players and 
then put the value of each byte of the player 
into the program. After you go through all 
that, the result is usually disappointing as 
your creation jerks slowly across the screen. 

The feet is, P/M graphics are complex, but 
with a good reference (there are numerous 
good books and magazine articles on the sub- 
ject) and a memory map, the average BASIC 
programmer can make them work. Fast Move 
will not save you from having to know all 
that, because you have to tell Fast Move 
everything it needs to know in order to move 
your players just the way you want them to 
move. The big difference is, using Fast Move, 
your BASIC program will have a degree of 
control over your players that is possible only 
from machine language. Fast Move looks 
complex because it is versatile, but the results 
will more than make up for the effort required 
as your players move smoothly across the 
screen, just the way you pictured when you 
decided to try P/M graphics. 

OCTOBER A.N.A.L.O.Q. Computing 



However, you don't have to know anything 
to run the demo program; so before we get 
into the nitty-gritty of using Fast Move, I'll 
describe it. 

Running the Demo 
Program 

To see Fast Move in action, type in List- 
ing 1, save and run it. You'll see four play- 
ers, two cars and two arrows. After the period 
described on the screen, the arrows will move 
by themselves, turning to face the directions 
in which they are moving. The cars will re- 
spond to joysticks zero and one. The speeds 
of the arrows have been set in the BASIC pro- 
gram, but the cars' speeds can be changed 
by keys one through five on the keyboard. 

Players are normally of a single color, but 
when two differently colored players are com- 
bined to form a single player, any area of 
overlap can be a third color. To see the multi- 
colored players, with some really terrible 
sound effects thrown in, stop the demo by hit- 
ting the system reset key. Delete Lines 
360-470. This removes the shape-changing 
capability. A little familiarity with the pro- 
gram will show that changing the shape of 
combined players would be rather complex, 
although certainly possible. Now add these 
lines: 

195 POKE 1612,1: POKE 1613,1 
225 POKE 1614,PEEKC1545)-PEEK 
(1544):P0KE 1615,PEEKtl547)-P 
EEKC1546) 

508 IF PEEKC632J015 THEH SOU 
ND 1,30,18,8!GOTO 510 

509 SOUND 1,8,0,8 

510 POKE 1603,INTCRHDt03*15J : 
IF PEEKC16833=14 THEM 50UND 8 
,2,6,15:F0R 1=0 TO SOlNEXT I: 
SOUND 0,0,0,0: GOTO 508 

511 IF PEEKtl603)=18 THEM SOU 
MD 0,12,6,15:F0R 1=8 TO 58 : ME 
XT I: SOUND e,8,8,8:G0T0 508 

512 IF PEEKC1683)=11 THEM SOU 
ND 0,22,6,15:F0R 1=0 TO 58:HE 
XT USOUND e,8,e,e:G0T0 588 

513 IF PEEKtl683)=9 THEH SOUM 
D 0,32,6,15:F0R 1=0 TO 50:MEX 
T I:S0UMD e,8,0,8:G0T0 508 

514 IF PEEKC1603)=13 THEM SOU 
ND 8,42,6,15:F0R 1=0 TO 50:ME 
XT I:SOUMD 8,e,8,8:G0TO 508 

515 IF PEEKC1683J=5 THEN SOUM 
D 0,52,6,15:F0R 1=0 TO 50 : MEX 
T I:S0UND 0,8,0,8:GOTO 508 

516 IF PEEKC1603)=7 THEM SOUM 
D 0,62,6,15:F0R 1=8 TO SOlMEX 
T I:SOUND 8,O,O,0:GOTO 508 

517 IF PEEKC1603)=6 THEM SOUM 
D 0,72,6,15:F0R 1=8 TO 50:MEX 
T I:SOUND 8,8,0,8:GOTO 588 

518 FOR 1=0 TO 25: NEXT I : GOTO 
508 

Now change these lines 



170 


POKE 


623,33 


218 


POKE 


1544,95:P0KE 1545,95 


:POKE 1546,135:P0KE 1547,148: 


FOR 


1=0 to 3:P0KE 53248+1, PEE 


KC1544 + I3 


:next I 


220 


POKE 


1556,15:P0KE 1557,15 


:POKE i558,9:P0KE 1559,9 


230 


POKE 


16ie,l:P0KE 1606, 0:P 


OKE 


1607, 


e:P0KE i6e8,2:P0KE i 


609 


2 





288 FOR A=P8+48 TO P0+48+14:R 

EflD BlPOKE 0,B:MEXT A 

298 FOR fl=Pl+48 TO Pl+48+14 : R 

EAD b:poke a,b:next a 

520 DflTft 8,231,231,231,126,36 

,255,255,255,255,255,8,0,8,8 

538 DfiTA 8,0,8,0,8,8,8,255,25 

5,255,153,153,153,153,129 

548 DATA 0,135,135,255,65,127 

,64,64,64 

558 DATA 8,225,225,255,138,25 

4,2,2,2 

After making these changes, run the pro- 
gram again. The players will begin their 
movement more quickly now because the data 
for all the different shapes doesn't have to 
load this time. The players are no longer cars 
and arrows: one is orange, green and blue, 
the other is red, white and green. The sec- 
ond one will move around by itself and emit 
terrible noises, while the first will respond 
to stick zero and emit a high tone while mov- 
ing. To see how the third color is dependent 
on player priority, change Line 170 back to 
POKE 623,1 and run again. Or, to see what 
the individual players looked like before they 
were combined, delete Line 195. The play- 
ers will break in half, one vertically, one 
horizontally. 

So far, the players have been in single-line 
resolution. To see the combined players in 
double-line resolution, change the following 
lines: 

175 POKE 559,34+8 

208 POKE 1550,15:P0KE 1551,11 

0:POKE 1548,50:P0KE 1549,200 

248 POKE 1605,l:P0KE 1554, PEE 

K(1550):P0KE 1555,PEEKC1551) 

270 P0=PMBA5E+512:P1=P8+128: 

P2=P1+128:P3=P2+128 

Run the program now, and you'll see that 
the players have stretched to twice their origi- 
nal height. At this size, they can travel the 
screen vertically in no time. Slower speeds 
and shorter players seem to be in order when 
using double-line resolution. 

Using Fasf iMove 

Probably the best way to explain the use 
of Fast Move is to go through the demo pro- 
gram, line by line. Each feature will be ex- 
plained as we come to the program line that 
sets up that feature. 

But first let me explain the basic premise 
behind the shape-changing ability: Instead of 
creating one shape for a player and putting 
its data into the P/M area, you define several 
shapes (such as the arrows that point in eight 
different directions) and store the data at pre- 
defined locations outside the P/M area. To 
display the player, you copy its initial shape 
into the P/M area. To change the shape, you 
simply copy the new shape into the P/M area, 
right on top of the old one. Fast Move han- 
dles the copying for you; you control it with 



POKES in BASIC. 

Line 80 creates a new RAMTOP and sets 
aside 16 pages of protected memory above it. 
This is enough space for the P/M area, the 
ML routine {Fast Move itself), if you want 
to put it there (the demo puts it in a string), 
data for all the player shapes and 800 bytes 
of unused memory, which must be left direct- 
ly above the new RAMTOP. (In some situa- 
tions, the OS will scroll screen data into this 
area and overwrite anything that happens to 
be there.) 

Line 90 sets the graphics mode, which 
forces the OS to set up a new display list un- 
der the new RAMTOP. For this demo, any 
graphics mode will work. 

Line 100 tells the OS where to find 
PMBASE. For single-line resolution P/M, 
PMBASE has to be an address that is divisible 
by 2048. Our reserved area contains two such 
addresses, RAMTOP and RAMTOP -h2048. 
Since the 800 bytes directly above RAMTOP 
are subject to clearing by the OS, we choose 
RAMTOP+2048. And, since the contents of 
RAMTOP and PMBASE must be expressed 
in "pages" of 256 bytes each for the OS, 
PMBASE is first defined as RAMTOP-l-8 
pages and this is poked into 54279. Howev- 
er, our program requires PMBASE to be an 
actual address, so it is redefined by multiply- 
ing it by 256. 

Lines 110 and 120 define the data that make 
up the string in Line 130. Lines 130 and 140 
zero out any residual garbage from memory 
above RAMTOP, before the program is 
placed there, using a short ML routine called 
ZE-I-. This routine zeroes a page at a time, 
and the format is "X=USR(ADR(ZE$), [be- 
ginning address], [# of pages to clear]." So 
Line 140 clears 16 pages starting at RAM- 
TOP. Notice that Line 140 also clears page 
6. Fast Move uses the first 87 bytes of page 
6 as pointers and indicators of certain condi- 
tions, such as wraparound. If your own pro- 
gram will use part of page six, use ZE$ at 
your own discretion. 

In Line 150, you inform Fast Move wheth- 
er you're using a 400/800 machine or the 
XL/XE type. It uses this information to know 
how to handle players 2 and 3, which have 
no corresponding joysticks in the XL/XE 
machines. See the section below on combin- 
ing players, for an advantage of the XL/XE 
machines. 

Line 160 turns on players but no missiles. 
The use of missiles is so application- 
dependent that including a handler for them 
would almost certainly limit their uses. 

Line 170 gives all players priority over all 
play fields. In the demo showing multi- 
colored players, 32 was added to the origi- 



OCTQBER A.N.A.L.O.G. Computing 



nal priority value, allowing the third color to 
appear. 

Line 175 enables DMA (Direct Memory 
Access) and defines its use with a standard- 
size playfield, players only, and single-line 
resolution. For double-line resolution, we 
subtract 16 from the value poked. 

Line 180 defines the colors of the players. 

Line 190 defines all players as being of nor- 
mal width. Poking an address with 1 will 
double that player's width, and poking with 
3 will quadruple it. Players do not all have 
to be of the same width. 

Line 200 defines the screen limits of play- 
er movement. Poking addresses 1548-1551 
will set, respectively, left, right, top and bot- 
tom limits. For example, players may be res- 
tricted to the bottom half of the screen by 
poking 1550 with a value equal to half a play- 
er's vertical range. For single-line resolution 
players, this would be 128; for double-line, 
it would be 64. 

Line 210 defines the initial horizontal po- 
sitions of the players. Each player requires 
two memory locations, the OS's Horizontal 
Position Register and a pseudo-register. They 
must both contain the same values at all times 
because the OS registers cannot be read, only 
written to. Fast Move uses Locations 
1544-1547 (for players 0-3) for the pseudo- 
registers, and the FOR-NEXT loop pokes the 
same values into the OS registers. Positions 
50-2(X) will be on the playfield, on most TVs. 
Poking positions lower or higher will cause 
the player to be off-screen, from where it may 
be moved onto the screen by the user pro- 
gram. Once on the screen, it will be subject 
to the screen limits that were set in line 200. 

Line 220 defines the length of each play- 
er. Locations 1556-1559 are poked with the 
vertical length of players 0-3, respectively. 
Assigning a player a length of will crash 
the program. 

Line 230 sets the initial speed (location 
1610) of players whose speed will be change- 
able from the keyboard. These players must 
have their individual speed locations 
(1606-1609 for players 0-3 respectively) poked 
with 0. Players that will not need to have their 
speeds changed from the keyboard, or that 
will move at a speed different from the others, 
should have their speed poked directly into 
their individual locations. For example, in the 
demo, the initial keyboard speed is 1, play- 
ers and 1 will move at keyboard speed (their 
speed locations are poked with 0), player 2 
will have a speed of 2, and player 3 will have 
a speed of 3. These locations may also be 
poked with different values from your own 
program while it is running. Location 1610 
must contain a positive nonzero value unless 



all four individual speed locations contain 
positive nonzero values, or the program will 
crash. 

In line 240, address 1605 is poked with 
to indicate single-line resolution, or with 1 
for double-line. The rest of the line must stay 
the same. 

Line 250 establishes the vertical difference 
between the top movement limit and the bot- 
tom, for use in the vertical wraparound 
funcfion. 

Line 255 tells the ML routine how many 
players it must move. If you wish to control 
some players by means other than Fast Move, 
Fast Move must have the lower-numbered 
ones. For example, if you poke 1616,3, Fast 
Move will take players 0-2 and leave player 
3 for you to control. 

In Line 260, poke 1599,1 for horizontal 
wraparound. Poke with to stop at screen 
limits. Address 1600 controls vertical wrap- 
around. 

Line 270 describes the standard P/M setup 
for single-line resolution. 

Line 280 reads the data defining player O's 
shape into the player's initial vertical posi- 
tion. The format is: FOR A=[PLAYER#] + 
[POSITION] TO [PLAYER#]+ [POSITION] 
-l-[PLAYER LENGtTH-l]. For example, play- 
er is ten bytes long, and when it first ap- 
pears it covers positions 48-57. The position 
of the first byte is considered to be the posi- 
tion of the player. Lines 290-310 define play- 
ers 1-3. POSITION must be between one- and 
255-player length for single-line resolution; 
for double-line, it must be between one- and 
127-player length. Vertical positions from 
about 30 to about 220 will be on the screen 
for single-line resolution (15 to 110 for double- 
line). Players initially positioned off the 
screen may be moved onto the screen by the 
user program, after which they will be sub- 
ject to the screen limits. 

Lines 320-350 poke the initial positions of 
players 0-3 into their respective pointers in 
page six. 

Fast Move will allow your players to stay 
one shape during your whole program, or to 
change shape whenever they change direc- 
tion. In order to accomplish the latter, you 
must first create all of the shapes you wish 
to use, up to a possible maximum of eight 
per player, and store them in specified mem- 
ory locations so the ML routine can copy 
them onto the screen when they are needed. 

Line 360 reads the data for all eight shapes 
of player and pokes it into a designated part 
of the reserved area; if you refer back to Line 
220, you'll see that all the players were de- 
fined as being ten lines long. So 80 bytes of 
data are poked into the storage area for play- 



er 0. Lines 370-390 do the same for players 
1-3. 

Note that each player's data is placed into 
a different page, beginning at the second byte 
of the page. Because each player does need 
a separate page, and there are exactly three 
pages in the "unused" area between 
PMBASE and the missile area, the data for 
the first three players was stored here, with 
the fourth player data taking the page before 
PMBASE. 

So, at 256 bytes per page, player O's data 
starts at (PMBASE-l-2 pages-f-1 byte), play- 
er 1 starts at (PMBASE-l-1 page+1 byte), 
player 2 starts at (PMBASE+1 byte), and 
player 3 starts at (PMBASE-1 page -1-1 byte). 
These are not mandatory locations for the 
shape data, and in fact may not be used with 
double-line resoludon, because then the un- 
used P/M area is only 384 bytes long. Any 
other data storage location must be coordi- 
nated with lines 400-470 in the BASIC pro- 
gram. The four pages used for data storage 
must be consecutive in memory, with player 
having the highest page and player 3 the 
lowest. 

Line 400 installs the page six pointers to 
tell the ML routine where each of the player 
shapes are stored. Since each player has a 
separate page for its shape data, each point- 
er in page six has to contain only the low byte 
of the address it points to. There is one point- 
er in each of eight addresses from 1561 to 
1568, and the shapes they point to, respec- 
tively, starting with 1561, are up, up-left, up- 
right, down, down-left, down-right, left, 
right. Because Line 400 is so important to 
the operation of the shape-changing, we'll 
dissect the line. 

P0SHAPE=1561: This cannot be changed 
unless you also change the ML routine. 

FOR I=PMBASE+513 TO 

PMBASE+513+X STEP Y: This FOR-NEXT 
loop computes the first data address of each 
shape for player 0. X=7*length of player 0. 
Y=length of player 0. The first time through 
the loop, the address of the up shape is poked 
into POSHAPE; next time through, the ad- 
dress of the up-left shape is poked into 
POSHAPE-l-1, and so on, until the first ad- 
dress of each shape has been poked into the 
pointer table. Note that in Line 360, 80 bytes 
of data were read and poked into the data stor- 
age area for player 0. In Line 400, because 
the player is ten bytes long, every tenth ad- 
dress of that data storage area is poked into 
the page six pointers for player 0. These 
pointers teO Fast Move where to find each one 
of the shapes. 

POKE P0SHAPE,I-lNT(I/256)256: As stat- 
ed above, only the low byte of each data ad- 



DCTOBER A.N.A.L.a.B. Computing 



dress is poked into the pointers. 

Lines 410-460 install the shape pointers for 
players 1-3. 

Line 470 tells Fast Move the page number 
where player O's data is stored. It figures out 
the page numbers for the other three players. 

To use players that do not change shape, 
lines may be deleted, as in the combined play- 
ers demo, or the appropriate pointers in ad- 
dresses 1561-1592 may be poked with Os. If 
shape-changing is desired, but eight differ- 
ent shapes are not (say, if you wanted only 
horizontal and vertical shapes, but no di- 
agonal ones), zeroing the pointers for di- 
agonal movement will prevent the shapes 
from changing during diagonal movement. 
Specifically, zeroing the diagonal pointers for 
player would mean poking into address- 
es 1562, 1563, 1565, and 1566. And, of 
course, these pointers may be changed by 
your BASIC program while it is running. 

Line 490 jumps to the subroutine, which 
reads the ML routine into the string MOVE$. 

In Line 500, the USR call shows an argu- 
ment of ADR(MOVE$)-fll. If loading the 
ML routine somewhere other than in a string, 
simply use an argument equal to the load 
address -I- 11. 

Line 510 uses addresses 1603 and 1604, the 
Alternate Movement Indicators (AMI) for 
players 2 and 3, to move the arrows around 
on the demo. Since all of the values returned 
by a joystick are positive integers equal to or 
less than 15, Poking the AMI's with random 
numbers less than 15 causes the players to 
move at random. When a number is poked 
that is not a valid joystick value, the player 
does not move. AMI's for players and 1 are 
1601 and 1602, respectively. 

When Fast Move is used with an Atari 400 
or 800, and players are being moved via the 
AMI'S, a joystick plugged into any port will 
override the AMI. With an XL/XE, the sticks 
for players and 1 will override the AMI's 
but players 2 and 3 may be moved only via 
the AMIS. 

Data Lines 520-550 contain the data used 
to display all the players at the beginning of 
the demo (one player per DATA statement). 
This is the data that is read in Lines 280-310. 
If your BASIC program did not need all four 
players on-screen at the beginning, some or 
all of these lines would not be here. If shape 
changing is not used, the leading and trail- 
ing zeroes in the DATA statements are not re- 
quired. However, when using shape- 
changing, all shapes for the same player must 
be the same length. This can require DATA 
statements to be filled out with Os, especial- 
ly when some shapes are vertical and some 
are horizontal for the same player. Also, the 



first byte of each shape must be 0. Let's look 
at the DATA statements for player 0. 

Lines 560-630 contain the eight shapes for 
player 0. Line 560 contains nine bytes that 
actually create the up shape and a first byte 
of 0. So, player must be defined in Lines 
220 and 280 as being ten bytes long. Line 570 
has only six bytes that actually create the up- 
left shape, so it must be filled out on both 
ends with Os. And, in Line 520, the initial 
shape must have enough Os to make it a total 
of ten bytes long. Note that the DATA state- 
ment for the first shape of player does not 
match the DATA statement for player in 
Line 520, because the first shape for each 
player is the up shape, and player O's initial 
shape in the opening screen was facing to the 
right. Lines 280-310 merely provided an ini- 
tial display, because the players have to start 
somewhere. They could have been placed off- 
screen and moved on-screen by Fast Move. 

Lines 32000-32590 read the ML routine 
into MOVES. 

Combining Players 

The XL/XE machines may have a slight 
disadvantage as far as the number of joystick 
ports they have, but with Fast Move, they have 
a slight advantage. If the XL/XE indicator is 
allowed to contain a (indicating an 800 ma- 
chine) when used on an XL or XE, and if 
both "combine" indicators are set to 1 in Line 
195, all players will respond to stick or AMI 
0. This means they may all be combined into 
one six-color player, which requires only one 
joystick or AMI to control it. (Nothing earth- 
shattering, but it could be handy.) 

When combining all four players in this 
fashion, there is one limitation that must be 
observed in addition to the other instructions 
laid out below for combining players: The 
even-numbered players must have the same 
horizontal posiUon, and the odd-numbered 
players must have the same horizontal posi- 
tion. For example, all four players may have 
their Horizontal Position Registers set at 100 
(they would be stacked more or less vertical- 
ly) or players and 2 could be at horizontal 
position 100 while players 1 and 3 could be 
at Position 105. 

Now let's look at the lines we changed in 
the demo to see the combined players. 

Line 170 changes player priority so the 
overlap area will be a third color. 

Line 195 enables players and 1 to com- 
bine by poking 1 into Location 1612, and ena- 
bles players 2 and 3 to combine by poking 
Location 1613. Two players may be positioned 
together on the screen, but if the appropri- 
ate address is not poked with 1, the two play- 
ers will separate when moved. 



Line 210 changes the horizontal positions 
of players 1 and 3 so they will combine on 
the screen with players and 2. 

Line 220 changes the lengths of players 
and 1 to match their new appearance. 

Line 225 establishes the difference between 
the horizontal positions of two players that 
have been combined. Location 1614 is for 
players and 1, 1615 is for players 2 and 3. 
If this line is included when players are not 
being combined, it won't hurt anything. 

Line 230 changes the speed of player 3 to 
match that of player 2. 

Lines 280 and 290 read the new longer 
length of players and 1 into P/M memory. 

Lines 508-518 add the sound effects to the 
combined-players demo. Lines 508 and 509 
turn on the high tone whenever player 0-1 is 
moved, and the other lines turn on different 
sounds for each direction player 2-3 moves. 

Lines 520-550 contain data for the new ap- 
pearance of all four players. Nofice the large 
number of Os in players and 1, though they 
don't change shape while moving. This is be- 
cause two players that are combined must be 
the same length, and they must begin at the 
same vertical position and end at the same 
vertical position. Horizontal position is unim- 
portant; two players can be combined and not 
even be touching each other. 

Double-Line Resolution 

Line 175 enables DMA for double-line 
resolution. 

Line 200 sets new vertical screen limits be- 
cause a double-line resolution player has a 
vertical range of only 128 bytes instead of 
256. 

Line 240 tells the ML routine we are us- 
ing double-line resolution. 

Line 270 is the standard P/M setup for 
double-line resolution. 

I've tried to make this program as versa- 
tile and universal as possible. I would be in- 
terested in hearing comments, questions, or 
complaints about Fast Move, and will do my 
best to answer them. f) 



REM KKKKMMMKKXXXMMKKXKXKKXXlllCXmmM 
REM * FflSTMOUE U.l.Ol * 

REM * by John W. Little » 

REM * » 

REM » COPYRIGHT 1989 » 

REM * BY ftMflLOG COMPUTING » 

REM XXKKXXXKKXKKXXXMKXXXXXKXXKKXXK 

REM 

HEM »»IMTRO 5CREENSX* 

REM I 

DIM ZESt28):DIM MOVES tl072J 

GRAPHICS 17JP051TI0N 0,5 

? ae;" FftSTMOUE ";? MS!? « 
" by john little":F0R 1=8 TO 2B00!N 
T I 

GRAPHICS 17!P0SITI0N 0,5:? »6;"AFTE 
PLAYERS APPEAR":? «6 : ? tt6 

REM FOLLOWING SPECIAL CHARACTERS AR 
[CNTRLl CT] , CCNTRL] CUI 

? tt6;"Ml routine will load":? a6;"i 
about •■ seconds":FOR 1=8 TO 30O0:NE 

I 



HO 


1 1 


CW 


2 1 


HH 


3 1 


ZD 


4 1 


BT 


5 1 


PM 


6 1 


HU 


7 1 


BC 


12 


BM 


14 


BK 


16 


R5 


18 


TB 


28 


HD 


30 




61' 




EX 


NM 


48 




R 1 


YH 


68 




E 


NF 


70 




n 




KT 



OCTOBEH A.N.A.L.O.Q. Computing 



39 



ae 
e 

o 



I 



F72 REM 
74 REM »*MftKE ROOM FOR P/M AND ROUTINE 

BO 76 REM 

PZ 80 R<lMTOP=PEEKC106) iPOKE 186, RflMTOP-16 
!RftMTOP=PEEKCie63 

RA 90 GRftPHICS 17 

10 100 PMBflSE=RftMT0P+8:P0KE 54279, PMBftSE : 
, PMB(l5E = PMBfl5E«255 

KHL 110 REM STRING DftTft 104,194,133,209,10 
I 4,133,288,104,184,133,287,160,0,152,17 

E 0,145,208,208,208,251,230,209,232 

l-FC 120 REM DftTfl 228,287,208,244,96 

! QU 138 ZES[l,283="hhB!]hrEhhna»'JJIJNlfniTT^ 

EECE*" 

RU 140 X=USR tflDR(ZES) ,1536,1J iHrUSRCADRCZ 

ES) ,RflMT0P»256,16J 
RO 142 REM 

ZM 144 REM »»4OO/8O0 OR XL/XE?»» 
, RM 146 REM 

UT 150 POKE 1611,0:REM 1=XL/KE 
t RC 152 REM 

I GS 154 REM »«P/M INFO»« 
I RD 156 REM 
f UV 160 POKE 53277,2 
I 10 170 POKE 623,1 
' GB 175 POKE 559,34+8+16 

r HQ 180 POKE 784,38:P0KE 705,15l!P0KE 706, 
55:P0KE 707,200 
RI 182 REM 
: KU 184 REM »«5ET-UP FOR ML ROUTINE** 
; RU 186 REM 
, KJ 190 POKE 53256, eiPOKE 53257, e:POKE 532 

58,8iP0KE 53259,0 
! FT 200 POKE 1550,3B;P0KE 1551, 22B ; POKE 15 
48,58:P0KE 1549,288 
Jl> 218 POKE 1544,95:P0KE 1545, 115 : POKE 15 
46,i35:P0KE 1547,155:F0R 1=0 TO 3:P0KE 
53248+1, PEEK(1544+I) :NEXT I 
AK 220 POKE 1556,10!P0KE 1557,18:P0KE 155 

8,9:P0KE 1559,9 
FVI 230 POKE 1610,i:P0KE 1606,8:P0KE 1607, 

0:P0KE 1608,2:POKE 1609,3 
JL 240 POKE 1605,0:POKE 1554, PEEK tl5505 : P 

OKE 1555, PEEK C1551) 
MU 250 POKE 1598, tPEEKC1551)-PEEKC1550)3 
OE 255 POKE 1616,4 
US 260 POKE 1599,1:P0KE 1600,1 
RF 262 REM 

5N 264 REM »*SET-UP P/M OREft** 
RR 266 REM 
DZ 270 P0=PMBftSE+lO24:Pl=PO+256;P2=Pl+256 

:P3=P2+256 
OF 288 FOR ft=P0+48 TO PO+48+9 : REftD B:POKE 

ft,B:NEKT A 
EO 290 FOR fl=Pl+48 TO Pl+48+9:READ B:POKE 

A,B!NEXT A 
EE 300 FOR fl=P2+48 TO P2+48+8:READ B;POKE 

a,B:NEXT A 
FH 318 FOR A=P3+48 TO P3+48+8:READ B:POKE 

A,B:NEXT A 
QH 312 REM 
BI 314 REM »*SET-UP PLAYER LOCATION POINT 

ER5»« 
RI 316 REM 
ZF 320 POKE 1537,INTCtP0+483/256J ;POKE 15 

36,P0+48-CPEEK tl537J*256)-l 
KF 330 POKE 1539,INT((Pl+48)/2563 :POKE 15 

38, P1+48-CPEEK 115393*256) -1 
Jfl 348 POKE 1541,INTtfP2+48)/256) JPOKE 15 

40, P2+4 8- CPEEKC154 13*2563-1 
UA 358 POKE 1543 , INT ( tP3+483 /256) : POKE 15 

4 2, P3+ 4 8- CPEEKt 15433*2563-1 
RE 352 REM 

JO 354 REM **5ET-UP PLAYER SHAPES** 
RR 356 REM 
UE 368 FOR I=PMBASE+513 TO PMBASE+513+79 : 

READ A:P0KE I,A;NEXT I 
FU 370 FOR I=PMBA5E+257 TO PMBASE+257+79 ; 

READ A:P0KE I,A:NEXT I 
HE 380 FOR I=PMBASE+1 TO PMBA5E+1+71 : READ 

a:POKE I,A:NEXT I 
UC 390 FOR I=PMBASE-255 TO PMBA5E-255+71 : 

READ A:P0KE I,A:NEKT I 
RM 392 REM 

HU 394 REM ••SHAPE-FINDING POINTERS** 
RY 396 REM 
UN 400 P0SHAPE=1561:F0R I=PMBflSE+513 TO P 

MBASE+513+70 STEP 10;P0KE P05HAPE,I-IN 

T (1/2563*256; P6SHAPE=P0SHAPE+1: NEXT I 
RD 410 P15HflPE=1569;F0R I=PMBASE+257 TO P 

MBa5E+2S7+70 STEP 18:P0KE P1SHAPE,I-IN 

TCI/2563 *256:P15HAPE=P1SHAPE+1 
FY 428 NEXT I 
SA 430 P2SHAPE=1577;F0R I=PMBflSE+l TO PMB 

A5E+1+63 STEP 9;P0KE P2SHAPE, I-INT tI/2 
, 563»255:P25HAPE=P25HAPE+1 
GC 448 NEXT I 
00 450 P3SHAPE=158S:F0R I=PMBASE-255 TO P 

MBASE-255+63 STEP 9:P0KE P35HAPE, I-INT 

{1/2 56 3 »256:P3SHAPE=P3SHAPE+1 
' GG 460 NEXT I 

PG 478 POKE 1593,INT{(PMBASE+5133/2S63 
\ RF 488 REM 

LA 482 REM ••READ IN DATA FOR ML ROUTINE* 



RR 
UP 



484 REM 



PI 


530 




,0 


UQ 


540 


lis 


550 


TG 

«0 


568 


578 


SS 


588 


598 


Eb 


688 


OD 


618 


CI 


628 




lO 


PJ 


630 




;e 


TD 


640 


DL 


650 


EN 


660 


RT 


670 


ER 


680 


or 


698 


CF 


700 




10 


PG 


710 




,0 


PU 


720 


lY 


730 



490 GOSUB 32008 
RM 495 REM 

PA 497 REM **5TART ML ROUTINE** 
51 499 REM 

ZO 500 A=USR(ADRCM0UE$3 ,ADR(M0UE$3+113 
QH 582 REM 
PJ 504 REM »*DEMO»« 
RI 506 REM 
EC 518 POKE 1683,IHTtRNDCB)*15} :F0R 1=8 T 

58:NEXT I:POKE 16B4, INT (RND (B)*153 : F 

OR 1=0 TO 5B:HEKT I;GOTO 518 
QV 512 REM 
RE 514 REM 
PG 528 DATA 8,68,255,255,255,255,255,68,8 

<8 

DATA 8,68,255,255,255,255,255,68,8 

DATA 0,16,16,16,16,146,84,56,16 

DATA 8,16,16,16,16,146,84,56,16 

DATA 8,60,68,94,68,68,58,68,94,68 

DATA 8,8,48,248,122,188,38,48,8,8 

DATA 8,8,28,15,94,61,128,28,8,8 

DATA 8,68,94,68,60,60,88,94,68,68 

DATA 8,0,28,15,94,61,128,28,8,8 

DATA 8,8,48,248,122,188,38,48,0,8 

DATA 8,34,255,255,255,255,255,34,8 

DATA 0,68,255,255,255,255,255,68,8 

DATA 8,60,60,94,68,68,68,60,94,60 

DATA 8,8,48,248,122,188,38,48,8,8 

DATA 8,8,28,15,94,61,128,20,8,8 

DATA 8,60,94,68,68,68,68,94,68,68 

DATA 8,8,28,15,94,61,120,20,0,0 

DATA 0,8,48,248,122,188,38,48,8,8 

DATA 8,34,255,255,255,255,255,34,8 

DATA 8,68,255,255,255,255,255,68,8 

DATA 8,16,56,84,146,16,16,16,16 
DATA 8,248,192,168,144,8,4,2,1 

AY 748 DATA 8,15,3,5,9,16,32,64,128 

UU 758 DATA 8,16,16,16,16,146,84,56,16 

QM 768 DATA 8,1,2,4,8,144,168,192,248 

HE 778 DATA 8,128,64,32,16,9,5,3,15 

00 780 DATA 0,16,32,64,255,64,32,16,8 

RE 790 DATA 0,8,4,2,255,2,4,8,8 

PS 800 DATA 0,16,56,84,146,16,16,16,16 

lU 810 DATA 0,240,192,160,144,8,4,2,1 

fty 820 DATA 0,15,3,5,9,16,32,64,128 

UR 830 DATA 0,16,16,16,16,146,84,56,16 

OJ 840 DATA 0,1,2,4,8,144,160,192,240 

MB 850 DATA 0,128,64,32,16,9,5,3,15 

OL 860 DATA 0,16,32,64,255,64,32,16,8 

RB 870 DATA 8,8,4,2,255,2,4,8,8 

KT 32800 RESTORE 32868 

GX 32818 FOR 1=1 TO ie72:READ Z:MOgES(I,I 

)=CHR$tZ) :HEXT I 
CY 32820 READ Z:IF ZO-1 THEN ? "ERROR IN 

CODE! CHECK DATA STATEMENTS !"; END 
DT 32048 RETURN 
TC 32060 DATA 104,104,178,184,168,169,7,3 

2,92,228,96,216,169,8,141,17,6,168,173 

,252 
CH 32070 DATA 2,281,31,288,7,169,1,141,74 

,6,208,42,201,38,288,7,169,2,141,74 
JC 32080 DATA 6,208,31,201,26,208,7,169,3 

,141,74,6,288,20,281,24,208,7,169,4 
FA 32898 DATA 141,74,6,288,9,281,29,208,5 

,169,5,141,74,6,173,18,6,141,14,6 
RD 32100 DATA 173,19,6,141,15,6,192,1,208 

,8,173,76,6,240,13,136,240,10,192,3 
KH 32110 DATA 208,27,173,77,6,240,1,136,1 

73,69,6,248,16,173,14,6,56,233,128,141 
BB 32128 DATA 14,6,24,109,62,6,141,15,6,1 

73,75,6,240,4,192,2,176,7,185,120 
HC 32138 DATA 2,201,15,208,5,185,65,6,248 

,186,141,24,6,172,17,6,185,28,6,133 
KM 32148 DATA 285,185,70,6,240,8,141,16,6 

,208,9,24,144,156,173,74,6,141,16,6 
JG 32150 DATA 152,24,109,17,6,141,83,6,13 

3,203,169,6,133,204,160,0,177,203,141, 

81 
JD 32160 DATA 6,280,177,283,141,82,6,162, 

8, 173, 24, 6, 201, 14, 240, 43, 232, 201, 10, 24 


MO 32170 DATA 38,232,201,6,240,33,232,201 

,13,240,28,232,201,9,240,23,232,201,5, 

240 
PB 32188 DATA 18,232,281,11,248,13,232,28 

1,7,248,8,288,3,24,144,171,24,144,125, 

172 
QN 32198 DATA 17,6,208,24,189,25,6,240,31 

,205,58,6,240,26,141,58,6,141,84,6 
AP 32200 DATA 173,57,6,141,85,6,208,102,1 

92,1,208,27,189,33,6,240,3,285,59,6 
XZ 32210 DATA 248,125,141,59,6,141,84,6,1 

73, 57, 6, 56, 233, 1,141, 85, 6, 288, 71, 192 
YB 32220 DATA 2,208,30,189,41,6,240,99,28 

5,68,6,248,94,141,68,6,141,84,6,173 
DZ 32230 DATA 57,6,56,233,2,141,85,6,208, 

40,24,144,156,192,3,208,70,189,49,6 
HU 32248 DATA 240,65,205,61,6,240,60,141, 



61,6,141,84,6,173,57,6,56,233,3,141 
UH 32250 DATA 85,6,208,6,24,144,54,24,144 

,216,160,0,200,173,84,6,133,203,173,85 
AT 32260 DATA 6,133,204,177,203,141,86,6, 

173,81,6,133,203,173,82,6,133,204,173, 

86 
QT 32270 DATA 6,145,283,196,205,208,221,2 

24,3,144,24,224,6,144,182,248,103,224, 

7,248 
UU 32288 DATA 182,238,17,6,172,17,6,284,8 

0,6,208,191, 76,98,228,173,81,6,205,14 
DH 32290 DATA 6,240,83,162,0,160,1,173,81 

,6,133,283,173,82,6,133,204,177,203,13 

6 
LK 32300 DATA 145,203,196,285,288,200,144 

,245,206,81,6,168,8,173,83,6,133,283,1 

69,6 
FP 32318 DATA 133,204,173,81,6,145,203,20 

5,14,6,240,34,232,236,16,6,208,203,172 

,17 
PY 32328 DATA 6,173,24,6,201,10,240,12,28 

1,6,240,11,208,163,24,144,160,24,144,8 

9 
NG 32330 DATA 24,144,82,24,144,81,173,64, 

6,248,146,164,285,173,81,6,133,203,173 

UY 32348 DATA 6,133,204,177,203,178,159,8 

,145,203,173,81,6,24,109,62,6,56,229,2 

05 
SP 32350 DATA 141,81,6,133,203,138,145,28 

3,136,288,16,173,83,6,133,283,169,6,13 

3,204 
5F 32360 DATA 173,81,6,145,283,208,183,17 

3,81,6,56,237,62,6,24,101,205,141,81,6 
PB 32370 DATA 208,187,24,144,165,144,85,1 

44,86,173,81,6,24,101,205,205,15,6,248 

,78 
RO 32388 DATA 162,0,164,285,173,81,6,133, 

203,173,82,6,133,204,177,283,288,145,2 

03,136 
HF 32390 DATA 136,16,247,238,81,6,168,0,1 

73,83,6,133,203,169,6,133,204,173,81,6 
JT 32408 DATA 145,283,24,181,285,285,15,6 

,248,28,232,236,16,6,288,282,172,17,6, 

173 
GX 32418 DATA 24,6,281,9,248,95,281,5,240 

,88,288,166,24,144,86,24,144,88,173,64 
Tl 32420 DATA 6,240,155,164,205,173,81,6, 

133,203,173,82,6,133,204,177,203,170,1 

69,8 
BB 32438 DATA 145,203,173,81,6,56,237,62, 

6,24,181,285,141,81,6,133,283,138,145, 

283 
AF 32448 DATA 135,288,16,173,83,6,133,283 

,169,6,133,284,173,81,6,145,283,288,18 

7,173 
PI 32450 DATA 81,6,24,109,62,6,56,229,205 

,141,81,6,208,187,169,1,288,168,24,144 
FM 32460 DATA 104,162,0,172,17,6,192,1,20 

8,15,173,76,6,240,36,136,185,8,6,24 
Eft 32470 DATA 109,78,6,288,17,192,3,288,2 

2,173,77,6,248,17,136,185,8,6,24,189 
FZ 32480 DATA 79,6,288,153,8,6,153,0,208, 

208,199,185,8,6,285,12,6,208,8,173 
HO 32490 DATA 63,6,240,186,173,13,6,56,23 

3,1,153,8,6,153,8,288,192,8,208,31 
HO 32588 DATA 173,76,6,248,59,185,8,6,24, 

185,1,285,13,6,288,48,185,8,6,56 
PB 32518 DATA 237,78,6,288,33,24,144,44,2 

4,144,151,192,2,288,29,173,77,6,248,24 
ZW 32528 DATA 185,8,6,24,185,1,285,13,6,2 

08,13,185,8,6,56,237,79,6,153,8 
KO 32530 DATA 6,153,0,208,232,236,16,6,28 

8,214,240,166,162,0,172,17,6,192,1,208 
TO 32540 DATA 15,173,76,6,240,73,136,185, 

8,6,24,109,78,6,208,17,192,3,208,24 
MB 32558 DATA 173,77,6,240,54,136,185,8,6 

,24,109,79,6,200,153,8,6,153,0,208 
RC 32568 DATA 169,0,240,282,192,8,208,14, 

173,76,6,240,26,185,8,6,24,109,78,6 
AQ 32570 DATA 208,12,173,77,6,240,12,185, 

8,6,24,109,79,6,205,13,6,240,8,185 
ZH 32580 DATA 8,6,285,13,6,288,8,173,63,6 

,240,154,173,12,6,24,105,1,153,8 
YD 32590 DATA 6,153,0,288,232,236,16,6,28 

8,143,248,134,-1 

NG 32338 DATA 

6,248,146, 

,82 
WV 32348 DATA 

,145,283,1 

85 
SP S23SB DATA 

3,136,208, 

3,204 
SF 32360 DATA 

3,81,6, 56 , 
PB 32378 DATA 

44,86,173, 

,78 
RO 32380 DATA 

283,173,82 

83,136 



24,144,82,24,144,81,173,64, 
164,285,173,81,6,133,283,173 

6,133,204,177,283,170,169,8 
73,81,6,24,189,62,6,56,229,2 

141,81,6,133,203,138,145,28 
16,173,83,6,133,283,169,6,13 

173,81,6,145,203,288,183,17 
237,62,6,24,161,205,141,81,6 

208,187,24,144,165,144,85,1 
81,6,24,101,265,285,15,6,248 

162,6,164,285,173,81,6,133, 
,6,133,284,177,263,200,145,2 



OCTDBEH A.IM.A.L.O.G. Computing 



HF 32390 DflTfl 136,16,247,238,81,6,168,0,1 
73,83,6,133,203,169,6,133,204,173,81,6 
JT 32400 DflTfl 145,203,24,181,205,205,15,5 
,240,28,232,236,16,6,208,202,172,17,6, 
173 
GX 32410 DftTft 24,6,201,9,248,95,201,5,240 
,88,208,166,24,144,86,24,144,80,173,64 
TI 32420 DfiTft 6,240,155,164,205,173,81,6, 
133,203,173,82,6,133,204,177,203,170,1 
69,0 
BB 32430 BftTft 145,203,173,81,6,56,237,62, 
6,24,101,205,141,81,6,133,203,138,145, 
203 
ftp 32440 DflTfl 136,208,16,173,83,6,133,203 
,169,6,133,204,173,81,6,145,203,208,18 
7,173 
PI 32450 DflTft 81,6,24,109,62,6,56,229,205 
,141,81,6,208,187,169,1,208,168,24,144 
FN 32460 DOrtt 104,162,0,172,17,6,192,1,20 

8,15,173,76,6,240,36,135,185,8,6,24 
Efl 32470 DOTfi 109,78,6,208,17,192,3,208,2 

2,173,77,6,240,17,136,185,8,6,24,109 
FZ 32480 DATft 79,6,200,153,8,6,153,0,208, 

208,199,185,8,6,205,12,6,208,8,173 
HO 32490 DflTft 63,6,240,186,173,13,6,56,23 

3,1,153,8,6,153,0,208,192,0,208,31 
HO 32500 DftTft 173,76,6,248,59,185,8,6,24, 

105,1,205,13,6,208,48,185,8,6,56 
PB 32510 DftTft 237,78,6,208,33,24,144,44,2 
4,144,151,192,2,208,29,173,77,6,240,24 
ZV 32520 DftTft 185,8,6,24,105,1,205,13,6,2 

08,13,185,8,6,56,237,79,6,153,8 
KO 32530 DftTft 6,153,0,208,232,236,16,6,20 
8,214,240,165,162,0,172,17,6,192,1,208 
TQ 32540 DftTft 15,173,76,6,240,73,136,185, 

8,6,24,109,78,6,208,17,192,3,208,24 
MB 32550 DftTft 173,77,6,240,54,136,185,8,6 

,24,109,79,6,200,153,8,6,153,0,208 
RC 32560 DftTft 169,0,240,202,192,0,208,14, 

173,76,6,240,26,185,8,6,24,109,78,6 
AQ 32570 DftTft 208,12,173,77,6,240,12,185, 

8,6,24,109,79,6,205,13,6,240,8,185 
ZM 32580 DftTft 8,6,205,13,6,208,8,173,63,6 

,240,154,173,12,6,24,105,1,153,8 
VD 32590 DftTft 6,153,0,208,232,236,16,6,20 
8,143,240,134,-1 




LISTING 2: BASIC 



.OPT NO LIST 
Fft5TM0UE Wl.ei BY J. LITTLE 
COPYRIGHT 1989 
BY ANALOG COMPUTING 

KKKKlClOtXlCKKKKKK 

MOUES ALL 4 PLAYERS DURING UBI 

WITH OR WITHOUT JOYSTICK 

XKXMKXMIDCKKKXXX 

*FftST 

»5M00TH 

»RELOCftTftBLE 

*UARIflBLE SPEED FOR EACH PLfiYER 

KXXXXXXXXXXXXXX 

CHANGES SHftPES OF PLftVERS 

TO MATCH DIRECTION OF MOVEMENT 

KXXXXXXKKXKKXXX 

OPTIONftL HORIZONTAL OR VERTICAL 



0105 
0106 
0110 
0120 
0130 
0140 
0150 
0160 
0170 
0180 
0190 
0200 
8210 
6220 
0250 
0260 
0270 
0280 
0290 
0300 
0310 
0320 
0330 
0335 
0340 
0350 
0360 



XXXXXXKKKKXKXXX 

DOUBLE OR SINGLE LINE RESOLUTION 

XXXKXXKXXXXXKXX 

ALL PARAMETERS POKED IN BASIC 

XXXXXXXXXXKXKXX 

PLAYERS 0,1 OR 2,3 MAY BE 
COMBINED TO MAKE MULTI-COLOR 
PLAYERS 

XXXXXXKXXXXXXXX 

WORKS WITH 400/800 OR KL/XE OS'S 

XXXXXXKXXXXXXXX 



0378 
8388 
0390 
0480 
0410 
0420 
0430 
0440 
0470 
0488 
0498 
0500 

esie 

0528 
0538 
0540 
0570 
0580 
0598 
8688 
0618 
6615 
6628 
6636 
0640 
0658 
6655 
6656 
6660 
0670 
0688 
6685 
6686 
6687 
6688 
6689 
6696 
6691 
8692 
8693 
8694 
0695 
0696 
6697 
6698 
6699 
6700 
6716 
0720 
0730 
0735 
0740 
0756 
0755 
0760 
0770 
0780 
0790 
0886 
8818 
0828 
6836 
6848 
6858 
6868 
6878 
6888 
0898 
8908 
0918 
092Q 
0938 
0948 
6950 
6968 
6978 
0988 
0990 
1000 
1018 
1620 
1838 
1646 
1650 
1060 
1870 
1080 
1085 
1090 
1108 
1105 
1110 
1120 
1136 
1146 
1286 
1256 
1260 
1276 
1286 



; XXXXXXXKKKXXKXXM 
;» OS REGISTERS » 
; XKXKXXXXXXXXXXXX 



HP0S8 = SD888 
STICK = S8278 



; XXXXXXXXXXXKK 
;X ZERO PAGE » 
; XXXXXXKXXXKXK 

PAGEO - $CB 
LENGTH = SCD 



;P0 HORZ POSITION 
;P0 JOYSTICK 



;TEMP 

; CURRENT PLAYER 



; MKXXXXKKKKXXXXXKXXXXXK 
;» PAGE SIN CONSTANTS » 
J XXXXXKKKXKXXXXKXXXKXXX 

; POINTERS TO ADDRESSES OF PLAYERS 
PO = $0600 ;PLAYER0 
PI = S0602 ;PLAYER1 
P2 = $0604 ;PLAYER2 
P3 = $0606 ;PLAYER3 

;H0RZ POSITION PSEUDO-REGISTERS 
HVARO = $0608 JPLAYERO 
HUARl = $0609 ;PLAYER1 
HUAR2 = $060A ;PLAYER2 
HUAR3 = $0608 ;PLAYER3 

JPLAYERS' SCREEN BOUNDARIES 
SCRNLEFT = $060C J LEFT 
SCRNRIGHT = $060D ; RIGHT 
SCRNTOP = $060E ;TOP 
SCRNBTM = $O60F ;BOTTOM 

;FOR CHANGING SPEED OF PLAYERS 
SPDUAR = $0610 

;FOR ROTftTING PLftYERS DURING VBI 
PCOUNTER = $0611 



SflUETOP 

SAUEBTM 

LEN = $0614 

LENl = $0615 

LEN2 = $0616 

LEN3 = $0617 



$0612 ;TEMP STORAGE 
$0613 ;TEMP STORAGE 

;LENGTH OF PLVR 

;LENGTH OF PLYR 1 

;LENGTH OF PLYR 2 

;LENGTH OF PLYR 3 



TEMPSTICK = $0618 ;HOLD STICK UAL 

;P0INTER5 TO ADDRESSES FOR 
;DIRECTIONAL SHAPES 
POSHAPEO = $0619 ; UP SHAPE 



POSHAPEl 


= 


$061A 


UP LEFT SHAPE 


P0SHAPE2 


- 


$0618 


UP RIGHT 


P0SHAPE3 


= 


$061C 


DOWN 


P0SHAPE4 


- 


$061D 


DOWN LEFT 


P0SHAPES 


z 


$061E 


DOWN RIGHT 


P0SHAPE6 


z: 


$061F 


LEFT 


P0SHAPE7 


- 


$0620 


RIGHT 


PISHAPEO 


~ 


$0621 


UP SHAPE 


PlSHAPEl 


- 


$0622 


UP LEFT SHAPE 


P1SHAPE2 


- 


$0523 


UP RIGHT 


P15HAPE3 


= 


$0624 


DOWN 


P1SHAPE4 


= 


$0625 


DOWN LEFT 


P15HAPE5 


- 


$0526 


DOWN RIGHT 


P1SHAPE6 


- 


$0627 


LEFT 


P1SHAPE7 


= 


$0528 


RIGHT 


P2SHAPE0 


r 


$0629 


UP SHAPE 


P2SHAPE1 


= 


$852ft 


UP LEFT SHAPE 


P2SHAPE2 


= 


$0628 


UP RIGHT 


P2SHAPE3 


= 


$062C 


DOWN 


P2SHAPE4 


- 


$062D 


DOWN LEFT 


P2SHAPE5 


= 


$062E 


DOWN RIGHT 


P2SHAPE6 


= 


S062F 


LEFT 


P2SHAPE7 


~ 


$0630 


RIGHT 


P3SHAPE0 


- 


$0631 


UP SHAPE 


P3SHAPE1 


- 


$0632 


UP LEFT SHAPE 


P3SHAPE2 


= 


$0633 


UP RIGHT 


P3SHAPE3 


- 


$0534 


DOWN 


P35HAPE4 


= 


$0635 


DOWN LEFT 


P3SHAPE5 


= 


$0636 


DOWN RIGHT 


P3SHAPE6 


~ 


$0637 


■LEFT 


P3SHAPE7 


= 


S0638 


RIGHT 



JHI-BVTE OF SHAPE ADDRESSES 
SHAPEPAGE = $8639 

;LO-BYTE ADDRESS OF CURRENT SHAPE 
POSHADR = $063A JPLAYER 6 
PISHADR = $0638 ;PLAYER 1 
P2SHADR = $063C ;PLAYER 2 
P3SHADR = $063D ;PLaYER 3 



UDIFF = $063E 
HWRAP = $063F 
UWRAP = $0640 



;SCRNBTM-SCRNTOP 
;HORZ WRAP-AROUND 
;VERT MRAP-AROUND 



1298 

1308 
1318 
1326 
1336 
1346 
1341 
1342 
1356 
1366 
1376 
1388 
1396 
1486 
1485 
1416 
1426 
1422 
1425 
1438 
1446 
1458 
1466 
1478 
1488 
1485 
1496 
1495 
1506 
1501 
1502 
1503 
1505 
1566 
1518 
1520 
1536 
1540 
1558 
1566 
1576 
1588 
1596 
1666 
1676 
1686 
1696 
1786 
1716 
1728 
1736 
1746 
1756 
1766 
1778 
1786 
1790 
1860 
1816 
1826 
1836 
1846 
1858 
1866 
1876 
1888 
1896 
1968 
1916 
1926 
1936 
1948 
1958 
1968 
1976 
1986 
1998 
2668 
2016 
2628 
2636 
2046 
2856 
2866 
2676 
2686 
2696 
2166 
2110 
2128 
2136 
2148 
2158 
2151 
2166 
2176 
2188 
2198 
2286 
2265 
2216 



LOOKO = $6641 ;PLAYERO AMI 

LOOKl - $0642 ;PLAYER1 AMI 

L00K2 = $0643 ;PLAYER2 AMI 

L00K3 = $0644 J PLAYER3 AMI 

DBLRES = $0645 ; DOUBLE-LINE RES 

SPDUARO = $0646 JSPEED PLAYER0 

5PDVAR1 = $0647 

SPDVAR2 = $0648 

SPDUAR3 = $0649 

COMMON = $064A ; STORE SPDUAR 
XLIND = $864B ;HL/XE OS 
COMBINOl = $064C ; COMBINE POSPl 
C0MBIN23 = $064D 

;HORZ DIFFERENCE BETWEEN PO S PI 

DIFFOl = $064E 

DIFF23 = $064F 

NUMPLYRS = $0650 ;« OF PLAYERS 

LOCATION = $0651 ;0F CURRNT PLVR 

POINTER = $0653 ; TO LOCATION 

PS = $0654 ;CURRNT SHAPE ADR 

TEMP = $6656 



»*»T0 5AUE SPACE IN PACE ZERO, 
;"'LOCATI0N", "POINTER", AND "PS" 
;ARE ROTATED INTO PAGE AS 
;NEEDED FOR INDIRECT ADDRESSING. 



.TITLE "FASTMOVE VI. 01" 
.SET 2,77 
.SET 3,0 
.SET 4,66 
.TAB 12,16,24 
»= 37572 {ORIGIN 



PLA 



; INITIALIZE UBI ROUTINE 



I 



START ADR HIBVTE 



LOBYTE 



PLA 

TAX 

PLA 

TAY 

LDA tt7 

JSR $E45C 

RT5 



; START OF UBI ROUTINE 

START CLD 

LDA »0 J FIRST PASS. . . 
5TA PCOUNTER ;0F UBI 
TAY ; STICK INDEX 

LDA 764 ;SPEED CHANGE? 



; COMMON SPEED CHOICE FROM KEYBD 



;SPEED = 1? 

;IF NOT, CHECK 2 

;IF SO, CHANGE. . . 

; SPEED 

;THEN CHECK STICK 



ONE CMP tt31 

BNE TWO 

LDA ttl 

STA COMMON 

BNE LOOK 
TWO CMP »3e 

BNE THREE 

LDA »2 

STA COMMON 

BNE LOOK 
THREE CMP tt26 

BNE FOUR 

LDA tS3 

STA COMMON 

BNE LOOK 
FOUR CMP n24 

BNE FIUE 

LDA »4 

STA COMMON 

BNE LOOK 
FIUE CMP tt29 

BNE LOOK 

LDA »5 

STA COMMON 



-BEGINNING OF MOUEMENT LOOP- 



-IF 2 PLAYERS ARE COMBINED, 
ARRANGEMENTS MUST BE MADE FIRST- 



LOOK LDA SAMETOP ; REINSTATE ORIG 
STA SCRNTOP ;SCRN TOP, BOTTOM 
LDA SAUEBTM ; IN CASE THEY 
STA SCRNBTM ;WERE CHANGED. 



9D 
O 
O 



z 
o 

w 



CPY ttl 



;I5 THIS PLAYERl? 



OCTOBER A.IM.A.L.O.O. Computing 



O 

2 

W 

mi 

o 

I 



I 



BNE CPV3 ;H0, CHECK FOR P3 
LDft C0MBIN81 ;P8,P1 COMBINED? 
BEQ RE50L ; MO. DOUBLE RES? 
PEY ;VE5,REflD 5TICKB 

BEO RESOL jREfiLLV A JMP 

;I5 THIS PS? 

JH0,G0 READ STICK 
LDft C0MBIHZ3 ;P2,P3 COMBINED? 
BEQ RESOL ;N0 
DEY ;VES,REflD 5TICK2 



2238 
2248 
2258 
2268 
2270 CPY3 CPY »3 

BNE STKCHK 



-IF PI OR P3 ftND DOUBLE-LINE RES 
ADJUST SCRNTOP AND SCRNBTM 
TO COMPENSATE 

FOR FACT THAT PLAYERS DON'T 
START AT BEGINNING OF PAGE.- 

RE50L LDft DBLRES ;DBLE-LINE RES? 
BEQ STKCHK ;N0. 
LDft SCRNTOP ;RftISE SCRNTOP... 



2288 
2298 
2388 
23i8 
2328 
2338 
2348 
2341 
2342 
2343 
2344 
2368 
2378 
2388 
2398 
2488 
2418 
2428 

2438 

2440 

2458 

2468 

2478 

2488 

2485 

2498 

2SB8 STKCHK LDft 58648 ;KL^KE COMPUTER? 
BEQ OLDOS ;N0,4e8 OR 880 
CPY tJ2 ;YES;IF P2 OR P3, 
BCS KLOS ;SKIP STICK READ. 



BEQ SHAPE 
3228 BNE INTERMRETURH 
3298 J 
3300 IHTERMLOOK CLC 
3318 BCC INTERML00K2 
3320 ; 
3330 INTERMRETURN CLC 

BCC INTERMRETURNl 



SEC 

SBC ttl28 

STA SCRNTOP 

CLC 

ADC UDIFF 

STA SCRNBTM 



;1Z8 BYTES SO. 
J UPPER AND LOWER 
; SCREEN LIMIT. . . 
CHECK HILL WORK. 



; -CHECK PLYR«(8-4} TO SEE IF 

; CURRENT PLAYER SHOULD BE MOUED- 



2528 
2538 
2548 



2558 OLDOS LDA STICK, Y ;CHECK STICK 



2568 
2578 



CMP ttlS 
BNE STKMOU 



; STICK CENTERED? 
;N0 



2588 KLOS LDft L00K8,Y ; CHECK AMI 

2688 BEQ INTERMRETURN ;N0 MOVE 

2618 STKMOg STA TEMPSTICK jSAWE STICK 

2628 

2638 

2648 

2678 

2688 

2698 

2780 

2718 

2728 

2738 

2748 

27S8 ) 

276B INTERML00K2 CLC 

2778 BCC LOOK 

2788 ; 

2798 COMSPD LDA COMMON JKEYBD SPEED 

2888 STA SPDUAR ;IHTO SPDUAR. 

2818 UNCOM TYft ; 



SET LENGTH, SPEED, AND LOCATIOH- 
LDV PCOUNTER ; 
LDA LEH,Y JSET LENGTH FOR 
STA LENGTH ; CURRENT PLAYER. 

LDft 5PDgAR8,Y ; IHDIWIDUftL . . 



BEQ COMSPD 
STft SPDVAR 
BNE UNCOM 



SPEED SETTING. . . 
OR COMMON SPEED. 



2828 
2838 
2848 
2841 
2842 
2843 
2858 
2868 
2878 
2888 
2898 
2988 
2918 
2928 
2938 
2935 
2948 
2958 
2968 
2970 
2980 
3880 
3818 
3820 
3838 
3848 
3858 
3888 
3878 
3888 
3898 
3188 
3118 
3128 
3138 
3148 
3158 
3168 
3178 
3188 
3198 
3288 



CLC 

ADC PCOUNTER ; INCREMENT. 

STA POINTER JPOIHTER... 

STA PAGEO 

LDA tt6 

STA PftGE8+l 

LDY Ite JTO. . . 

LDft CPAGE83,Y ;CURRENT.. 

STA LOCATION ; PLAYER... 



INY 
LDft 



J ADDRESS. 
tPAGEe3,Y 



STft L8CATI0M+1 ;DONE! 



; -DETERMINE DIRECTION OF MOVEMENT 
J AND SHAPE REQUIRED- 



LDK »8 JINDX FOR SHAPE. 
LDA TEMPSTICK ; SAVED VALUE. 



CMP ni4 
BEQ SHAPE 
INX 

CMP nie 

BEQ SHAPE 

INK 

CMP tt6 

BEQ SHAPE 

INK 

CMP t»13 

BEQ SHAPE 

INK 

CMP «9 

BEQ SHAPE 

INK 

CMP »5 

BEQ SHAPE 

INK 

CMP ttll 

BEQ SHAPE 

INK 

CMP 87 



; GOING UP? 

; CHANGING ROUTINE 

;UP LEFT? 



;UP RIGHT? 



;DOWN? 



;DOWN LEFT? 



;DOWN RIGHT? 



;LEFT? 



; RIGHT? 



SHAPE LDY PCOUNTER ;PB CURRENT? 
BNE 5HAPE1 ;N0, CHECK PI 

; CHECK PLYR8 SHAPE POINTER FOR 
JADDRESS CONTAINING SHAPE DATft. 

LDft POSHAPEO.H ; 

BEQ S5J ;ZERO=N0 CHANGE. 

CMP PeSHADR )NEW 5HAPE=0LD? 

BEQ SSJ 

STA POSHftDR ; 

STA PS ;N0, CHANGE SHAPE 

LDA SHAPEPAGE ; 

STA P5+1 ; 

BNE CHANGE ;GB GET CHANGED. 
SHAPEl CPY Ml 

BNE SHAPE2 

LDft PlSHftPE8,K 

BEQ SSJ 

CMP PISHADR 
SSJ BEQ SAMESHAPE 

STft PISHADR 

STA PS 

LDA SHAPEPAGE 

SEC 

SBC ttl 

STft PS+1 

BNE CHANGE 
5HftPE2 CPY «2 

BNE SHAPES 

LDA P2SHftPEB,K 

BEQ SAMESHAPE 

CMP P2SHADR 

BEQ SAMESHAPE 

STA P25HADR 

STft PS 

LDA SHAPEPAGE 

SEC 

SBC tt2 

STA PS+1 

BNE CHANGE 



INTERMLO0K3 CLC 

BCC INTERMLOOK 



SHAPES CPY tJ3 

BNE SAMESHAPE 
LDft P3SH0PE8,K 
BEQ SAMESHAPE 
CMP P3SHADR 
BEQ SAMESHAPE 
STA P3SHADR 
STft PS 

LDA SHAPEPAGE 
SEC 

SBC «3 
STA PS+1 
BNE CHANGE 



INTERMRETURNl CLC 
BCC RETURN 



INTERMLOOKl CLC 

BCC INTERML00K3 



; REPLACE. 
;OLD. . . 



CHANGE LDY ttO 
LOOP INY 

LDA PS 

STA PAGEB 

LDA P5+1 

STA PAGEO+1 

LDA tPAGEOJ,Y ;SHAPE. 

STA TEMP 

LDA LOCATION 

STA PAGEB 

LDA LOCATION+1 

STA PAGEB+1 

LDA TEMP 

STA CPAGEOJ ,Y JWITH. . 

CPY LENGTH ;NEW. . . 



4188 ;— RETURN ROUTINE; PLACED IN 
4181 ; MIDDLE OF PROGRftM TO FACILITATE 
^162 JBRANCHING. RETURNS TO CHECK 

4190 JNEKT PLAYER OR EXITS VBI AFTER 

4191 ;LflST PLAYER — 
4268 ; 

4Z1B RETURN INC PCOUNTER 



3340 
3350 
3368 
3378 
3388 
3382 
3385 
3386 
3398 
3488 
3418 
3420 
3438 
344B 
3458 
3468 
3478 
3488 
3498 
3508 
3518 
3528 
3538 
3548 
3558 
356B 
3578 
3588 
3598 
3686 
3618 
3628 
3638 
3648 
365S 

3668 

3678 

3688 

3698 

3780 

3718 

3728 

3738 

3731 

3732 

3733 

3734 

373S 

3736 

3748 

3750 

3760 

3770 

3788 

3798 

3888 

3818 

3828 

3838 

3848 

38S0 

3868 

3878 

3880 

3898 

3908 

3918 

3928 

393B 

3940 

3950 

396B 

3961 

3962 

3963 

3964 

3978 

397J 

3972 

3973 

3974 

*975, 

^976 

3988 

3990 

4088 BNE LOOP ;SHAPE. 

4B18 SAMESHAPE CPK «3 ; DIRECTION INDEK 



4B2B 
4678 
408B 
4148 
415B 
4168 



BCC MOVEUP JFOR K<3 
CPX ««6 JFOR 2<K>6 
BCC INTERMOVE JDOWN 
BEQ INTERMLEFT JFOR X=6 
CPK »7 
BEQ INTERMRIGHT 



LDY PCOUNTER JHHQ'S NEXT? 
CPY NUMPLVRS J ALL PLAYERS? 
BNE INTERMLOOKl JN0,G8 AGAIN. 
JMP SE462 JRETURN FROM VBI 



-UPWARD MOVEMENT ROUTINE- 



4220 

4238 

4240 

4250 

4268 

4278 

428B 

4298 

4380 ; 

4310 MOVEUP LDft L8CATI0N ; IS PLYH AT 

4328 CMP SCRNTOP J TOP OF SCRN? 

4338 BEQ UWRAP J WRAP-AROUND? 

4340 LDX «0 JN0,INIT SPDVAR 

4358 UP5PEED LDY «1 JINIT BYTE-COUNT 



4351 
4352 
4353 
4354 



LDA LOCATION 

STA PAGEO 

LDA LOCATION+1 

STA PAGEe+1 



4360 UPMORE LDA tPAGE0J,V JMOUE... 



DEY JONE BYTE. . . 

STA tPAGEO),Y J UPWARD 

CPY LENGTH J FINISHED MOVING? 

INY 

INY 

BCC UPMORE JN0,KEEP MOVING. 

DEC LOCATION J MOVE FINISHED. 

LDY »0 J STORE NEW. . . 

LDft POINTER 

STA PAGED 

LDA ««6 

STA PAGEB+1 

LDA LOCATION JPLAYER... 

STA tPAGEB),Y JADDRESS. 

CMP SCRNTOP J TOP OF SCRN? 

;YE5, WRAP-AROUND? 

JIF NOT, 

; CHECK SPEED AND 



BEQ UWRftP 

INX 

CPK SPDVftR 



4370 

4380 

4390 

4400 

4410 

4428 

443B 

4440 

4441 

4442 

4443 

4444 

4458 

4468 

447B 

4488 

4498 

45BB 

4518 

4520 

4538 

4548 

4558 

4568 

4570 

4580 

4590 

4600 J 

4618 J 

4620 INTERMRETURN4 CLC 

4538 BCC RETURN 

4640 ; 

4650 INTERMOVE CLC 

4660 BCC MOVEDOWN 

4670 ; 

4680 INTERMLEFT CLC 

4690 BCC INTERMLEFT6 

4700 J 

4710 INTERMRIGHT CLC 

4720 BCC INTERMRIGHT6 

4730 J 

4740 

4750 

47S1 

4752 

4760 

4770 

4780 UWRAP LDft VMRAP ; WRAP-AROUND? 



BNE UPSPEED J MOVE AGAIN. 

LDY PCOUNTER JVERT MOVE DONE. 

LDA TEMPSTICK J CHECK FOR 

CMP niB ; DIAGONAL MOVE 

BEQ INTERMLEFT 

CMP t<6 

BEQ INTERMRIGHT 

BNE RETURN 



-DETERMINE IF VERTICAL 
WRAP-AROUND IS DESIRED AND 
IMPLEMENT FOR UPWARD MOVEMEMT- 



4790 
4800 



BEQ RETURN 
LDY LENGTH 



JNO 



4881 ULOOP LDft LOCftTION 



STft PAGEO 

LDA LOCATION+1 

STA PAGE0+1 



4802 

4803 

4804 

4805 J 

481B J ONE BYTE AT A TIME... 

4811 J STORE PLAYER DATA IN XREG.. 

4812 ;AND ZERO OUT. . . 

4813 JLOCATIOM BEING MOVED FROM. 
LDA (PAGE03,Y ; 
TAK J 
LDA »B J 
STft (PAGEO), Y J 



<t 



4820 
4830 
4848 
485B 
4855 
4868 
487B 
4S8B 
4898 
4980 
4910 
4912 
4928 
4930 
4948 
4958 
4968 



LDA LOCATION J 8LD LOCATION... 

CLC ' 

ADC VDIFF J PLUS SCRN LENGTH 

SEC J MINUS 

SBC LENGTH JPLAYER LENGTH... 

STA LOCATION J= NEH LOCATION. 

STA PAGES 

TKA ; STORE DATA IN 

STft CPaGE8),V JNEW LOCftTION. 



DEY 

BNE UL00P2 



J MOVE FINISHED? 
JIF NOT,PREPftRE 



OCTOBER A.N.A.L.O.B. Computing 



LDft POINTER ;T0 MOUE 

STfl POGEe ;HEXT BYTE. 

LDA <te 

STft PftGE0+l 

LDA LOCATION ; PUT NEM ADR IN 

STA CPAGEOl.Y JODR POINTER. 



BNE INTERMRETURN4 ;NEKT PLYR . 
UL00P2 LDA LOCATION ; NEU LOCATION 
SEC ; MINUS 

SBC UDIFF ; SCREEN HEIGHT 
CLC JPLUS 

ADC LENGTH JPLAYER LENGTH 

STA LOCATION ;=OLD LOCATION. 

BNE ULOOP ;MOgE NEKT BYTE. 
S898 

5180 ; 

15118 INTERMRETURH3 CLC 

^128 BCC INTERMRETURN4 
5138 ; 

INTERMLEFT6 BCC INTERMLEFTl 



IHTERMRIGHT6 BCC INTERMRIGHTl 



; -DOWNWARD MOUEMENT ROUTINE- 



MOUEDOWN LDA LOCATION ;IS PLYR AT 
CLC 

ADC LENGTH 
CMP SCRNBTM ; BOTTOM OF 5CRN? 



BEQ DWRAP 
LDK tte 



;YE5,VERT WRAP? 
;NO,INIT SPD INDK 



5235 
B24e 



^5518 



DOWNSPEED LDY LENGTH ;MOVE FIRST 

LDA LOCATION 

STA PAGEe 

LDA LOCATION+1 

STA PAGE0+1 
DOWNMORE LDA CPAGEe),Y ;BYTE OF.. 

INV ;PLAYER... 

STA (PAGES), V ;DOWN. 

DEY 

DEY 

BPL DOWNMORE ; GET NEXT BYTE. 

INC LOCATION J MOVE FINISHED. 

LDY no ; STORE NEU. . . 

LDA POINTER 

STA PAGE8 

LDA <te 

STA PAGEB+1 

LDA LOCATION ;PLAYER... 

STA tPAGEB>,Y JADDRESS. 

CLC 

ADC LENGTH 

CMP SCRNBTM ; AT SCREENBOTTOM? 

BEQ DWRAP ;IF SO, WRAP 

INK ;IF NOT, 

CPX SPDUAR ;CHECK SPEED 

BNE DOWNSPEED JAND MOUE AGAIN 

LDY PCOUNTER 

LDA TEMPSTICK ; CHECK STICK 

CMP tt9 ;FOR DIAG MOUE 

BEQ LEFT 

CMP »5 

BEQ INTERMRIGHT2 
JTR2 BNE INTERMRETURN3 

INTERMLEFTl CLC 
BCC LEFT 

INTERMRIGHTl CLC 

BCC INTERMRIGHT2 



-IF VERTICAL WRAP-AROUND DESIRED 
IMPLEMENT FOR DOWNWARD MOUEMENT- 



DWRAP LDA UURAP ; WRAP-AROUND? 

BEQ IHTERMRETURN3 ; NO WRAP 
; WORKS SAME AS UPWARD WRAP. 

LDY LENGTH 
DLOOP LDA LOCATION 

STA PAGED 

LDA LOCATION+l 

STA PAGEB+1 

LDA (PAGEB],Y 

TAX 

LDA tta 

STA CPAGE0J,Y 

LDA LOCATION 

SEC 

SBC UDIFF 

CLC 



5768 
5778 
5771 
5788 
5798 
5888 
5818 
5811 
5812 
5813 
5814 
5838 
5848 
5858 
5868 
5878 
5888 
5898 
5988 
5916 
5928 
5938 
5948 
5958 
5968 
5978 
5988 
5998 
6888 
6818 
6828 
6838 
6848 
6858 
6068 
6878 
6888 
6898 
6188 
6118 
6128 
6138 
6148 
6158 
6168 
6178 
6188 
6198 
6288 
6218 
6228 
6238 
6248 
6258 
6268 
6278 
6288 
6298 
6388 
6318 
6311 
6328 
6338 
6348 
6358 
6368 
6378 
6388 
8398 
6488 
6481 
6418 
6428 
6438 
6448 
6458 
6468 
6478 
6471 
6488 
6490 
6588 
6518 
6528 
6538 
6540 
6558 
6568 
8578 
6588 
6598 
6688 
6618 
6628 
6638 
6648 
6658 
6668 
6678 
6688 
6698 
6788 



ADC 


LENGTH 


STA 


LOCATION 


STA 


PAGE8 


TXA 




STA 


CPAGE83,V 


DEY 




BNE 


DL00P2 


LDA 


POINTER 


STA 


PAGEO 


LDA 


tt6 


STA 


PAGE8+1 


LDA 


LOCATION 


STA 


tPAGEej,Y 


BNE 


JTR2 


DL00P2 LDA LOCATION 


CLC 




ADC 


UDIFF 


SEC 




SBC 


LENGTH 


STA 


LOCATION 


BNE 


DLOOP 


INTERMRETURN2 LDA ttl 


BNE 


JTR2 



IHTERMRIGHT2 CLC 

BCC INTERMRIGHT3 



-MOUE LEFT ROUTINE- 



LEFT LDX «t8 ;INIT SPEED INDEX 
LDY PCOUNTER ; INIT PLAYR INDX 

; -ARRANGE FOR COMBINED PLAYER5- 

LEFT4 CPY »1 ;IS THIS PLAYERl? 
BNE CPY3L ;IF NOT,CHK P3 . 
LDA C0MBIN81 JP8,P1 COMBINED? 
BEQ LEFTl ; NO . 
DEY ;YES. 

LDA HUAR8,Y ; FIND PLAYER 8... 

CLC ;AND ATTACH PI . . . 

ADC DIFFOl ;AT OFFSET. 

BNE LEFT3 ;REALLY A JMP. 
CPY3L CPY M3 

BNE LEFTl 

LDA C0MBIN23 

BEQ LEFTl 

DEY 

LDA HUARO,Y 

CLC 

ADC DIFF23 
LEFTS IHY 

STA HUAR8,V ;STORE PI OR P3 

STA HP0S8,Y JIN NEW POSITION. 

BNE INTERMRETURH2 ;NEXT PLYR 

;-IF PI OR P3 ARE COMBINED 

; PLAYERS, THEIR LOOP ENDS HERE- 

; -GENERAL LEFT MOUEMENT ROUTINE- 

LEFTl LDA HUARe,Y ;CHECK HORZ POS 
CMP SCRNLEFT ;IS PLYR AT EDGE 
BNE LEFT2 ; NO, KEEP MOUING 
LDA HWRAP ; WRAP-AROUND? 

BTR BEQ INTERMRETURN2 ;N0 

LDA SCRNRIGHT ;YES, PLACE PLYR 
; AT RIGHT EDGE 

LEFT2 SEC ; 

SBC ttl ;MOUE LEFT 1 
STA HUARO,V ;SAUE NEU POS 
STA HP0S8,Y JSET POS REG 



-ADJUSTING P8 OR P2 POSITION FOR 
WRAP-AROUND OF COMBINED PLAYER- 



CPYBL CPY ttO ;IS THIS PO? 

BNE CPY2L ;NO,CHK FOR P2 . 

LDA C0MBIN81 ;P0,1 COMBINED? 

BEQ SPDL ;N0. 

LDA HUARe,V ;IS PLAYER 8... 

CLC ; 

ADC ttl ; 

CMP SCRNRIGHT ; AT RIGHT EDGE? 



BNE SPDL 



;N0. 



LDA HUAR8,V ;VES, MOUE P0., 



SEC 

SBC DIFFOl 

BNE LEFTS 



;LEFT ENOUGH. 
;T0 FIT PI IN. 
J JMP 



INTERMRIGHT3 CLC 
BCC RIGHT 



INTERMLEFT4 CLC 
BCC LEFT4 



SBTTff 

6728 
6738 
6748 
6758 
6760 
6778 
6780 
6790 
6800 
6810 
6820 
J6S30 
6848 
J6858 
.6868 
16878 
^6888 
f6898 
86908 
|6918 
6928 
6938 
6940 
,6958 

i6968 
16961 
[6962 
16963 
■ 6988 
6998 
7888 
7010 
7028 
7830 
7048 
7858 
7068 
7078 
7880 
7890 
7108 
7118 
7128 
7138 
7148 
7158 
7168 
i7178 
17188 
7198 
i7208 
7210 
;7228 
7238 
7248 
7250 
7268 
7270 
7280 
7290 
7308 
7310 
7328 
7330 
7348 
7358 
7368 
7370 
7388 
7398 
7400 
7410 
7428 
7421 
7438 
7440 
7458 
7468 
7478 
7488 
7498 
7580 
7518 
7528 
7530 
7548 
7558 
7568 
7578 
7588 
7598 
7680 
7618 
7628 
7638 
7648 
7658 
7668 
7678 
7688 
7698 



;I5 THIS PLAYER2? 



CPY2L CPY tt2 

BNE SPDL 

LDA CDMBIN23 

BEQ SPDL 

LDA HUAR8,Y 

CLC 

ADC ttl 

CMP SCRNRIGHT 

BNE SPDL 

LDA HUAR8,Y 

SEC 

SBC DIFF23 
LEFTS STA HUARe,Y 

STA HP0S8,Y 



SPDL INX 

CPX SPDUAR ; CHECK SPEED 
BNE INTERMLEFT4 ;MOUE AGAIN 

JTR BEQ BTR ;MOUE NEXT PLAYER 



;-MOUE RIGHT ROUTINE- 

;-IF PI OR P3 IS COMBINED, TACK IT 
;ONTO P8 OR P2, THEN RETURN. THIS 
;PART OF RIGHT ROUTINE IS 
;IDENTICAL TO LEFT ROUTINE. - 

RIGHT LDX tta 

LDY PCOUNTER 
RIGHT4 CPY ttl 

BNE CPY3R 

LDA C0MBIN81 

BEQ RIGHTl 

DEY 

LDA HUAR8,Y 

CLC 

ADC DIFF81 

BNE RIGHT3 
CPY3R CPY «3 

BNE CPY8R 

LDA C0MBIN23 

BEQ RIGHTl 

DEY 

LDA HUAR8,V 

CLC 

ADC DIFF23 
RIGHTS INY 

STA HUAR0,Y 

STA HP058,Y 

LDA tte 

BEQ JTR 



;FIND SCRNRIGHT IF COMBINED P8,P2 



CPYOR CPY ttB ;IS THIS PLAYER8? 
BNE CPY2R ;N8,CHK P2. 
LDA COMBINBl ;P8,P1 COMBINED? 
BEQ RIGHTl J NO. 
LDA HUAR8,V ; CURRENT HPOS... 

JPLUS. . . 

JPB-Pl OFFSET. 

JPOPI G SCRNRIGHT 



I 



CLC 

ADC DIFF81 
BNE RIGHTS 
CPY2R LDA C0MBIN23 
BEQ RIGHTl 
LDA HUARe,Y 
CLC 
ADC DIFF23 

J -IF COMBINED PLAYER IS AT 
J SCRNRIGHT, CHECK FOR H0R2 WRAP- 
RIGHTS CMP SCRNRIGHT 
BEQ CHKWRAP 

J-UNCOMBINED PLAYER AT SCRNRIGHT? 

RIGHTl LDA HWAR8,V 
CMP SCRNRIGHT 
BNE RIGHT2 



CHKWRAP LDA HWRAP 

BEQ JTR J NO WRAP = RETURN 
LDA SCRNLEFT 

J -GENERAL MOVE-RIGHT ROUTINE- 

R1GHT2 CLC JINC CURRENT... 

ADC Ml J POSITION AND PUT 

STA HUARB,Y JNEW POSITION IN 

STA HP0S8,Y JPOSITION REGS, 



INX 

CPX SPDUAR JFAST ENOUGH? 

BNE RIGHT4 JNO.MOUE AGAIN. 

BEQ JTR JYES, RETURN. 



O 

o 

90 

I" 
M 

2 
O 
w 



OCTOBER A.IM.A.L.O.Q. Computing 



43 



A LETTER FROM THE PUBLISHER 

It's no secret that the U.S. Atari market isn't as healthy as it could be. The 8-bit com- 
puter line has declined in popularity, while the ST, though it has gained a respecta- 
ble following in Europe, has yet to find its niche in the states. For these reasons, most 
software companies won't develop products for the Atari systems. 

This lack of software support has a subtle, but nonetheless powerful impact on maga- 
zines that rely on the Atari market for their well-being. The cold fact is that adver- 
tisers for the 8-bit products are nearly nonexistent, and there ore precious few 
advertisers for ST products. 

Since, for profitable publications, we depend to a great extent upon advertising, 
we are left with two choices if our publications are to continue: We con increase 
the price of our magazines, thus forcing readers to pick up the tab for the lack of 
advertising, or we can find a way to make the magazines less expensive to pro- 
duce. We've opted for the latter. 

There ore, of course, many ways we can cut the magazines' publishing costs: We 
can reduce the page count. We can get rid of the color. We con pay contributors 
less. Unfortunately, none of these options, nor others, not mentioned here, makes 
much of a difference in the long run. 

After much thought, we decided that although the Atari market is not capable of 
supporting two Atari-specific magazines from a single publisher, it is active enough 
to support one. So we're going to combine ANALOG Computing and ST-LOG into 
a single monthly publication. 

Don't panic! When you think about it, the merging of the magazines will allow us 
to produce a much nicer publication. And since the single magazine will be larger 
than either of the individual ones, we won't have to cut much from our content. In 
fact, after doing some analysis, we've discovered that we will be able to offer the 
same columns, departments and types of features you've come to expect. Little will 
change, except that everything will come to you under a single cover. 

The November issue will be the first combination magazine. Next month we'll give 
you more details on what the new publication will be like, as well as our plans for 
the future. (We plan some nice surprises, like a reduction in the cost of magazine disks.) 

We believe that merging ANALOG Computing and ST-LOG is the best solution to 
a tough problem. It allows us to continue publication while giving you your full money's 
worth. It also gives Atari a chance to prove their claim that in the coming year they 
will emerge a strong presence in the U.S. When that time comes, we plan to reevalu- 
ate the situation and possibly separate the publications once again. 

Recently, Atari supporters hove had to stick together like never before. We've been 
there, providing support and information for nearly nine years. And we plan to be 
there for many more. 



Here's to the future! 




^5?^ 



Lee H. Poppas 
Publisher 



OCTOBER A.N.A.L.O.Q. CompuCing 



B&C 



ComputerVisions 



3257 KII'ER ROAD 

SANTA CLARA, CA 95051 

(408)749-1003 

(408) 749-9389 FAX 



A 



STORE HOURS 
TUE- FRI 10am- 6pm 

SAT - 10am - 5pm 
CLOSED SUN - MON 



ALL TITLES ON DISK 



ENTERTAINMENT 

I?. MJAMS ADVENTURES .. 14 

ALIANTS 20 

ALT. HtALiTY CITY 26 

ALT. REAL [HINGEON 26 

ASSUr.T rORCE 19 

AUTO riUEl 3 5 

BEYONtl CASTLE WOLF. ... 14 

BISMARK 26 

BOP (. WRESTLE 26 

BORDINO: 1U12 22 

rvinLtiERriASH constr.skt i? 

BRl'CE LEE 17 

CASTLE VJOLFENSTEIN. ... 14 

CHAMP. LODE RUNNER ... 26 

COSMIC TUNNELS 9 

U-HUc; 7 

DALLAS QUEST 7 

DELl'SE INVADERS 7 

FICHT NIGHT 17 

GAUNTLET (64K) 31 

DRFPRR nUNGEONS 22 

CUNSLINGER 26 

HARD HAT MAC 7 

JAWMREAKER 9 

KAHATEKA 13 

KNICKERBOCKERS 13 

KORONIS RIFT 13 

LAST V-8 8 

L.A. SWAT/PANTHER .... 8 

LEADERBOARIl 13 

LODE RUNNER 13 

MTCROLEAGHE BASEBALL.. 35 

NAPOLEON AT WATERLOO . 22 

MONTEZUMA'S REVENGE... 14 

MOl'SEOUEST 17 

MOON SHUTTLE 7 

NIBBLER 12 

NINJA a 

OGRE 26 

M'S WELL 9 

O'RILRY'S MINE 9 

PTRATES OF BARB. COAST 22 

PT TEAM, /DEMON ATTACK . 13 

PREPPIE I fc II 9 

RESCUE ON FHACTALAS... 13 

ROME i THE BARBARIANS IV 

SPITFIRE 40 31 

STARFLEET I 44 

STAR RAIDERS II 17 

SPY VS. SPY III 17 

STOCKMARKET 22 

STRIP POKER 26 

SUMMER GAMES 17 

TAX DODGE 9 

TEMPLE OF APSHAI 9 

THE HULK 5 

TOMAHAWK (64K) 26 

TRAILBLAZER 26 

ULTIMA II 35 

ULTIMA III 35 

Ul.riMA IV 53 

UNIVERSE 44 

ZAXXON (400/800) 13 

i|(if(i(iit(^:4iiiii{ti(i)|<)tt)ttiiii(<>(<>l<>f< 



PROGRAMMING 

.95 DIAMOND (GEM O/S ) .... ( 



95 
50 
** 

MICROPOSE SPECIALS!! 
CONFLICT IN VIET NAM . 10.95 
CXRNSADE IN EUROPE ... 10.95 
DECISION IN DESERT ... 10.95 
F-15 STRIKE E.AGLE .... 14.95 

KENNEDY APPROACH 10.95 

NATO COMMANDER 10.95 

SILENT SERVICE 12.95 

SOLO FLIGHT 12.95 

TOP GUNNER 10.95 



LINKWORD: ITALIAN 
MASTER TYPE 



DOS 2 . 5 
DOS XE. . 



7.95 
10.00 



PRE -SAT t-JORD ATTACK 
STATES AND CAPITALS 



14. 95 
9. 95 



DISK I/O 26.95 SPELLING BEE (AG 5 10) 14.95 

TOUCH TYPING 9.95 

QUIZ MASTER CONSTR.... U.95 

OUIZ HSTR. USA CONSTR. 0.95 



KYAN PASCAL 
II6HTSFEED 

SPARTA DOS 




PRODUCTIVITY 

ANIMATION STATION .... 79 

ATARIWRITER 29 

ATARIWRITER (CART ONLY)19 

ATARIWRITER+ 44 

ATARIWRITER 80 

REQUIRES XEPOO .... 44 

ATARI BOOKKEEPER 24 

ATARI MUSIC II 14 , 

AWARDWARE (1050) 13, 

BANK STREET WRITER.... 14 

BLAZING PADDLES 31 , 

CELEBRITY COOKBOOK ... 26 

COMPUTE YOUR ROOTS ... 3 5 

DATAMANAGER 8. 

ELECTRONIC CHECKBOOK . 

FAMILY FINANCE 6, 

GUITAR WIZARD 26, 

HOME ACCOUNTANT 19 , 

HOME FILING MANAGER. . 6, 

HOMEPAK 24, 

INVENTORY MASTER 80, 

LETTER WIZARD 29, 

MONEY MANAGER 8. 

MUSIC CONSTRUCTION SET 13, 

NEWSROOM (1050 64K). 44, 

NEWS STATION 26. 

NEWS STA. COMPANION. . 26, 

PAGE DESIGNER 26. 

PAINT 12. 

PRINT POWER (1050).... 13. 

PRINTKIT (1050) 13. 

PRINTSHOP 34. 

P.S . COMPANION (64K) . 24 , 

P.S.GRAPHICS LIBRARY 1 17. 

P.S. GRAPHICS LIBRARY 2 17. 

P.S.GRAPHICS LIBRARY 3 17. 

PROOF READER 17 . 

PUBLISHING PRO 35, 

RUBBER STAMP 26, 

SVNTREND 14. 

SUPER MAILER 35. 

THE LOTTO PROGRAM .... 17 . 

TIMEWISE 6. 

TURBOWORD/BO COLUMN 

REQUIRES XEP80 44 . 

VIDEO TITLESHOP (64K). 26. 

GRAPHICS COMPANION. 17. 

VIRTUOSO 29. 

VISICALC 24 . 



AMEHICAH EDUCftTIOH: 

A-t BIOLOGY G10+ .... 17 . 

A+ GERMAN 17 , 

At GRAMMER G4 t .... 17, 

A+ READING COMP GIB 17, 

A-)- SCIENCE G3-4 .... 17, 

\-* SCIENCi; G5 6 .... 17 , 

At SCIENCE G7 8 .... 17, 

A+ SPANISH 17 . 

At U.S. GOV. G10+ . . 17 . 

A+ U.S. HIST. G5-' . . 17 , 

A-t VOCABULARY G4+... 17, 

A+ WORLD GEOG. G8+ . 17, 

A+ WORLD HIST. G8+ . 17. 
(G - GRADE LEVEL) 



EDUCATION 

ATARI LIGHT MODULE 

(REQ. STARTER SET) . 9.95 

BUZZWORD 35.95 

GRANDMA'S HOUSE ( 10) 9.95 

HEY DIDDLE (AGE 310). 9.95 

LINKWORD: SPANISH .... 22.50 

LINKWORD: GERMAN 22.50 

LINKWORD: FRENCH 22.50 



ATABI : 

CONCENTRATION 9.95 

DIVISION DRILL 9.95 

GRAPHING 9.95 

INSTRUCTIONAL COMPUT 9.95 

PLAYER MAKER 9.95 

PREFIXES 9. 95 

SCREEN MAKER 9.95 

SECRET FORMULA INTERH 9.95 
SECRET FORMULA ADVANC 9.95 

SPELL IN CONTEXT 8.. 9.95 

CBS (AGE 3-6): 

ASTROGROVER 8.95 

BIG BIRD SPEC DELIVE U.95 

ERNIE'S MAGIC SHAPE. 0.95 

DESIGBHAEE: 

MATHMAZE (6*11) .... 26.95 
MISSION ALGEBRA (ljt)13.b0 

SPELLICOPTER (Gil). 35.95 

TIHK TOHK (AGE 46): 

ABC'S a. 95 

COUNT AND ADD 8.95 

SMART THINKER 8.95 

SPELLING 8.95 

SUBTRACTION 8.95 

THINKING SKILLS .... 8.95 

ALL 6 TINK TONKS . . J9.95 

UHICOKH: 

10 LITTLE ROBOTS 

(PRE-SCHOOL) 26. 95 

FUN BUNCH {6-ADULT) 26.95 
RACECAR RITHMETIC 

(AGE Gm 2G.95 

WEEKLY READER (PRE - SCHOOL) : 

STICKY BEAR SHAPES . 26.95 

STICKY BEAR NUMBERS. 26.95 

STICKY BEAR ABC'S .. 26.96 

STICKY BEAR OPPOSITE 26.95 

SB BASKET BOUNCE ... 26.95 

STICKY BEAR BOP .... 26.95 

RUN FOR IT 26.95 

PIC BUILDER 26. 95 



ALL TITLES ON CARTRIDGE 



ENTERTAINMENT 

3D TIC TACTOE 9 

AIRDALL (XL/XE) 24 

ALIEN AMBUSH 9 

ACE OF ACES .(XL/XE) . 24 

ARCHON 19 

ASTEROIDS 15 

ASTRO CHASE 14 

ATARI TENNIS 9 

ATLANTIS 14 

BALL BLAZER 19 

BARNYARD BLASTER .... 24 

BATTLEZONE 19 

B.C. QUEST FOR TIRES 19 

BLUE MAX 19 

BOULDERS & BOMBS .... 14 

CAVERNS OF MARS 14 

CENTIPEDE 14 

CHICKEN 9 

CHOPLIFTER 14 

CLAIM JUMPER (400/600) 9 

CLOUDBURST 9 

CODRA 14 

CRIME BUSTER 24 

CROSSBOW 24 

CROSSFIRE 9 

CRYSTAL CA£TLES(XL/XE) 19 

DARK CHAMBERS (XL/XE). 24. 

DAVIDS MIDNIGHT MAGIC 19. 

DEFENDER 14. 

DELUXE INVADERS 7 . 

DESERT FALCON 19 . 

DIG DUG 19. 

DONKEY KONG 5. 

DONKEY KONG JR 19 . 

EASTERN FRONT (1941). 19. 

E.T. PHONE HOME 9. 

FIGHT NIGHT 19 . 

FINAL LEGACY 19. 

FOOD FIGHT (XL/XE)... 19. 

FOOTBALL 14. 

FROGGER 14 . 

GALAXTAN 9. 

GATO 24. 

GORP (400/HOO) 5. 

GYRUSS 14. 

HARDBALL 19 . 

INTO EAGLES NEST{XL/XE) 19 . 

JOURNEY TO PLANETS .. 9. 

JOUST 19. 

JUNGLE HUNT 19. 

KABOOM I 14 . 

KARATEKA 19. 

KRAZY ANTICS 14 . 

LODE RUNNER 24 . 

MARIO BROS (XL/XE)... 19. 

MEGAMANIA 9 . 

MILLIPEDE 14. 

MISSILE COMMAND 5. 

MOON PATROL 19 . 

MR. COOL 9. 

MS. PAC MAN 19. 

NECROMANCER 19. 

ONE ON ONE (XL/XE)... 19. 

PAC HAN 5 . 

PENGO 19. 

PLATTERMANIA 9. 

POLE POSITION 19. 

POPEYE 14 . 

Q-BERT 14 . 

OIX 14. 

RESCUE ON FHACTALAS . 19 . 

RETURN OF THE JEDI .. 14. 

ROBOTRON:2084 19. 

SKY WRITER 14 . 

SLIME (400/800) 9. 



.95 
.95 
.95 
.95 



.95 
.95 
.95 



SPRINGER 

SPACE INVADERS . 
STAR RAIDERS . . . 
STAR RAIDERS II 



/.95 
14.95 

5.00 
19.95 



SUBHARINEE COMMANDER 14.95 

SUMMER GAMES (XL/XE). 24.95 

SUPER BREAKOUT 9.95 

SUPER COBRA 14.95 

THUNDERFOX 19 . 95 

TURMOIL 9. 95 

WIZARD OF WOH 5.00 



PROGRAMMING 

ACTION! 71, 

ACTIONI TOOLKIT-DISK . 2G , 

BASIC XL 5i , 

BASIC XL TOOLKIT-DISK. 26, 

BASIC XE 71, 

LOGO 29. 

MAC/65 VI, 

MAC/65 TOOLKIT- DISK. . . 26. 

PILOT I'J . 



9 5 



PRODUCTIVITY 

ATARIWRITER I'J . 95 

FUN WITH ART 14.95 

MICROFILEH 22 . 50 




EDUCATION 

ATARILAB STARTER SET . 29-95 
MATH ENCOUNTERS 9.95 

FISHER PRICE (PRE SCHOOL): 

DANCE FANTASY b.95 

THINKING I/)GTC 8.95 

LOGIC LEVELS 8.9 5 

MEMORY MANOR 8.95 

SPIHHAKER (AGE 3 10): 
ALF IN COLOR CAVES . 9,95 

ALPHABET ZOO 9.95 

DELTA DRAWING 9.95 

PACEMAKER 9.95 

KIDS ON KEYS 9.95 

KINDERCOMP 9.9 5 

STORY MACHINE (XL/XE) 9.95 
(AGE 7 - ADULT) : 

ADV. CREATOR { 400/800 ). 9 . 95 

FRACTION FEVER 9.95 

(' - REQ. LIGNT GUN) 



l{e 3H ){:)(( 4; 4< sjt *H Vi >{< li sj< 4< ){:>!( sli )iE s[: >|: 

SPECIAL PRICE 

ATARI 

XEGAMEMACHING 

NOW ONLY 

$99.95 

LIMITED TIME ONLY 
LIGHTGUN 34.95 



SL7JPER SJRJECT^^ Z^S 

R.ECONr>ITIO]SrEI> A.XA.R.I IVI ER.C M A NI>IS E 30 



DA.'V WA.R.R.A.]SrT Y 



800 (48K) 

rOMPlTER 

$79.95 

1030 MODEM 
WITH EXPRESS! 

$24.95 



SPACE AGE 
JOYSTICK 

$5.00. 

ATARI 
TRACKBALL 

$9.95 



.1-1/2" DISKS 
AS LOW AS 75 CENTS 

:0 FOR SB. 95 

100 FOR $80 

iOOO FOR S750 

DOUBLE SIDED WITH 

OLD DEMO SOFTWARE 



1020 COLOR 
PRINTER/ PLOTTER 

$19.95 

(new in box) 
40 COLUMNS WIDF, 

INC. PENS PAPER, ETC. 



ATARI 
BOOKKEEPER 

$14.95 - NO BOX 

ATARI 

NUMERIC 

KEYPAD $7.95 



5-1/4" DISKETTES 
AS LOW AS 20 CENTS 

10 FOR 54.00 

100 FOR S20.'JS 

1000 FOR $200 

MOST ARE UNNOTCIIED 

WITH OLD SOFTWARE 



SHIPPING INFORMATION ■ Pricci do iiol iiicliide sliipphis and Imidline. Add S.'i.OO for small ileiiis ($8.00 Mill, for Caiiadal. Add $8.00 for diak drive. Add S2.7.1 for C.O.D. 
Calif, ri'3. includo l^''c salea lax. Maslercard and Visa accepted if >our U'lephone is liated in jour local phone director). Orders may be pre-paid with mone) order, cashier 
check, or personal check. Personal checks are held for three weeks before order is processed. C.O.D orders are shipjjed via L'PS and must be paid with cash, cashier check or 
money order. Int eniai ioiial and APO orders innsl be pre-paid with caahier check or money order. $20.00 niinimnm on all orders. All sales are final - no refniirls - prices are 
subject to cltan^e . 

Phone ortders accepted TUESDAY THROUGH FRIDAY (rom 10:00 am to 6:00 pm PST. 
We carry a full line of ATARI products - large public domain library - write or call for free catalogue 



PRICES SUBJECT TO CHANGE WITHOUT NOTICE - ALL SALES ARE FINAL 



CIRCtE # 101 DN READER'S SERVICE CARD 




by Clayton Walnum 



BASIC Editor II is a utility to help you 
enter BASIC program listings pub- 
lished in ANALOG Computing. To 
simplify the identification of errors, 
each program line is evaluated im- 
mediately after it's typed, eliminating the 
need for cumbersome checksum listings. 
When you've finished entering a program us- 
ing BASIC Editor II, you can be certain it 
contains no typos. 

An option is provided for those who wish 
to use standard BASIC abbreviations. Also, 
the program retains all Atari editing features. 
Finally, for those who prefer to type programs 
the conventional way, using the built-in edi- 
tor, a post-processing mode is available. It al- 
lows you to check typing after the entire 
listing has been entered. 

Typing in the Editor 

To create your copy of BASIC Editor II, 
follow the instructions below— exactly. 

Disk version: 

(1) Type in Listing 1, then verify your work 
with Unicheck (see Issue 39). 

(2) Save the program to disk with the com- 
mand SAVE "D-.EDIWRLl.BAS". 

(3) Clear the computer's memory with the 
command NEW. 

(4) Type in Listing 2, then verify your work 
with Unicheck. 

(5) Run the program (after saving a back- 
up copy) and follow all the on-screen 
prompts. A data file will be written to your 
disk. 

(6) Load Listing 1 with the command 
LOAD "EDITORLl.BAS". 

(7) Merge the file created by List- 
ing 2 with the command ENTER 
■'D-.ML.DAT". 



(8) Save the resultant program with the com- 
mand LISJ ■'D-.EDITORII.LST". 

Cassette version: 

(1) Type in Listing 1 and verify your work 
with Unicheck. 

(2) Save the program to cassette with the 
command CSAVE. (Do not rewind the 
cassette.) 

(3) Clear the computer's memory with the 
command NEW. 

(4) Type in Listing 2 and verify your work 
with Unicheck. 

(5) Run the program and follow the on- 
screen prompts. A data file will be written to 
your cassette. 

(6) Rewind the cassette. 

(7) Load Listing 1 with the command 
CLOAD. 

(8) Merge the file created by Listing 2 with 
the command ENTER ' 'C: ' '. 

(9) On a new cassette, save the resultant pro- 
gram with the command LIST ' 'C: ' '. 

Using the Editor 

Take a look at one of the BASIC program 
listings in this issue. Notice that each program 
line is preceded by a two-letter code. This code 
is the checksum for that line; it's not a part 
of the program. 

To enter a program listing from the maga- 
zine, load BASIC Editor H with the ENTER 
command, and run it. You'll be asked if you 
wish to allow abbreviations (see your BASIC 
manual). If you do, type Y and press 
RETURN. Otherwise, type N. 

Note: If you set BASIC Editor II to allow 
abbreviations, the program will run slightly 
slower. 

Your screen will now be divided into two 
"windows." The upper window will display 
each line after it's processed, as well as the 



checksum generated for that line. The lower 
window is where program lines are typed and 
edited. 

When the program's waiting for input, the 
cursor will appear at the left margin of the typ- 
ing window. Type a program line and press 
RETURN. The line will be evaluated and 
reprinted in the message window, along with 
the checksum generated. 

If the checksum matches the one in the 
magazine, then go on to the next program line. 
Otherwise, enter the command E (edit) and 
press RETURN. The line you just typed will 
appear in the typing window, where you may 
edit it. When you think the line has been cor- 
rected, press RETURN, and it'll be 
reevaluated. 

Note: You may call up any line previously 
typed, with the command E followed by the 
number of the line you wish to edit. For ex- 
ample, E230 will print Line 230 in the typ- 
ing window. Do not attempt to edit any 
program lines numbered 32600 and higher. 
These lines fall within the BASIC Editor II 
program. 

If you're using BASIC abbreviations, the 
two versions of the command E work slightly 
differently. The command E, without a line 
number, will call up the line exactly as you 
typed it. When you append the line number, 
the line will be printed in its expanded (un- 
abbreviated) form. 

Leaving tiie Editor 

You may leave BASIC Editor n at any time, 
by entering either B (BASIC) or Q (quit). If 
you type B, the Editor will return you to BAS- 
IC. Enter LIST to review your work, if you 
wish. Note that lines 326(X) and above are the 
Editor program. Your work will appear be- 
fore these lines. To return to the Editor, type 
GOTO 32600. 

Type Q, and you'll be asked if you really 
want to quit. If you type Y, the Editor pro- 
gram will be erased from memory, and you 
may then save your work in any manner you 
like. If you type A', the Q coitmiand will be 
aborted. 

Large Listings 

If the program you're entering is particu- 
larly long, you may need to take a break. 
When you want to stop, type Q and press 
RETURN, then save your work to disk or cas- 
sette. When you're ready to start again, load 
the program you were working on, then load 
BASIC Editor H with the ENTER command. 
Type GOTO 32600, and you're back in 
business. 



OCTOBER A.N.A.U.O.a. Computing 



The post-processor 

Many people may not want to use BASIC 
Editor II when entering a program listing, 
preferring, instead, the Atari's built-in editor. 
For that reason, BASIC Editor II will allow 
you to check and edit your programs after 
they've been typed. 

To take advantage of this option, type any 
magazine program in the conventional man- 
ner, then save a copy to disk or cassette (just 
in case). With your typed-in program still in 
memory, load BASIC Editor n with the 
ENTER command, then type GOTO 32600. 

Respond with A' to the "abbreviations" 
prompt. When the Editor appears on your 
screen, enter the command P (post-process), 
and the first program line will appear in the 
typing window. Press RETURN to enter it into 
the Editor. 

The line will be processed, and the check- 
sum, along with the program line, will be 
printed in the upper window. If the checksum 
matches the one in the magazine, press 
RETURN twice, and the next line will be 
processed. 

If you find you must edit a line, enter the 
command E, and the line will be moved back 
to the typing window for editing. 

When the entire listing has been checked, 
you'll be asked if you wish to quit. Type Y 
and press RETURN. The Editor program will 
be removed from memory, and you may then 
save the edited program in any manner you 
wish. 

Murphy's Law 

Anyone who's been associated with comput- 
ing knows this is the industry Murphy had in 
mind. You may find that, after typing a pro- 
gram with BASIC Editor II, it still won't run 
properly. There are two likely causes for this. 

First, it may be that you're not following the 
program's instructions properly. Always read 
the article accompanying a program before at- 
tempting to run it. Failure to do so may present 
you with upsetting results. 

Finally, though you can trust BASIC Edi- 
tor n to catch your typos, it can't tell you if 
you've skipped some lines entirely. If your 
program won't run, make sure you've typed 
all of it. Missing program lines are guaran- 
teed trouble. 

One last word: Some people find it an un- 
necessary and nasty chore to type REM lines. 
I don't condone the omission of these lines, 
since they may be referenced within the pro- 
gram (a bad practice, but not unheard of). If 
you want to take chances, BASIC Editor n is 
willing to comply. 



When you^ve finished 

entering a 

program using BASIC 

Editor 11, you 

can be certain it contains 

no typos. 



Listing 1. 
BASIC listing. 



32608 IF FL THEN 32616 

32602 DIM LSC115) ,SUS(115) ,C2$f2) ,B$C1 

15),M$(113),5SC9B),ESt69),aSCl) iFLzllS 

TMrOB = PEEKtl36) tPEEK(137)»<256 

32604 GRAPHICS OlPOKE 710, : P=0 : DBRrO : 

? "flLLOH DBBREUIATIONS"J IINPUT OSjIF 

S="V" OR OS="y" THEN flBR=l 

32606 BS(1)=" ";B$tll5)=" ":BS[2)=B$ 

32616 OPEN «I17,4,B,"E1":L$=" "IGOSUB J 

2662;5T«RT=0 

3261B POKE 766,1!P0KE 83, 35 ! POSITION 1 

,3IIF LEH(LS)<35 THEM ? LSiGOTO J26Z4 

32620 IF LEMILS)<77 THEN ? L$C1,38);? 

L$(39,LENCL$)] :G0TO 32624 

32622 ? LStl,38)!? LS(3?,76JI? L$C77,L 

EN(L$)) 

32624 POKE 752,0;P0KE 76B,0!P0KE 559,3 

4:P0KE 82,1:P0KE 83 , 38 : POSITION 9,101? 

" ";!INPUT ni7;LS:P0KE 766,1 
32626 IF tLS="P" OR LS="p") AND STORT= 
THEN P=1!LS="" 

32628 IF LS-"E" OR LS="e" THEN E=1:P05 
ITION 1,10;? 5U$ GOTO 32624 
32630 IF LS="Q" UR L$="q" THEM 3269B 
32632 IF LS="" AND P=l THEN 32686 
32634 IF L$="" THEN 32624 

32636 IF LS="B" OR L$="b" THEN GRAPHIC 
5 81? "TYPE 'GOTO 32608' TO CONTINUE"] 
END 

32638 IF LSC1,1)="E" OR LStl,l)="e" TH 
EH E=llTRflP 32624:EL=UALCL$(21) :POSITI 
ON 1,9!LI5T EL:GOTO 32624 
32640 SUS=LSiTRAP 32624 1 H=UAL tLS) 
3264Z STARTzlSIF P AND NOT E THEN 326 
52 
32644 GOSUB 32674:IF NOT ABR OR P THE 

32646 POKE 766,0:? CHRS {12SJ : POSITION 
0,3;L=UALtLS) :LIST L!? 1? !? "CONT":L$ 
:BS 

32648 POSITION 0,0:POKE 842,13iST0P 
32650 POKE 842, 12 : A = USR (ADR (S$] , ADR (LS 
) ,4) -.LSzLSCI, A) 

3 2652 CHKSUH=USR(ADR(H$) , ADR (LSI , LEN (L 
Si) !CHK5UM=CHKSUMtPEEKC1542)»65536 
32654 CHK=CHK5UM-(IHT(CHK5UM/676)»676) 
:HI = IHTCCHK/26) : LO = CHK- (Hm26) !C2SC1) = 
CHR$(HI*65) !C2SC2)=CHRSCL0+65) 
32656 IF NOT P OR E THEN E=B:GOSUB 32 
662:IF NOT P THEN 32660 

32658 POKE 83,39:P0KE 752,1:F0R K=3 TO 
5:P0SITI0N 1,X:? B$(l,38) IPOSITION 1, 
Kt7i? BSC1,38):NEXT X:P0KE 83,38 
32660 POKE 766,1:P0KE 83, 38 1 POSITION 6 
,7!? C2S!P0KE 752,0lGOTO 32618 
32662 GOSUB 32782!P0KE 766,6!P0KE 752, 
1!? "IS";POKE 82,l:DL = PEEK(5eO]t25eKPEE 
K(561) t4 

32664 POKE DL-l,7e:P0KE DLt2,6lP0KE DL 
t3,112!P0KE DLt4,112lP0KE 0Lt5,112lP0K 
E 0Ltl3,112:P0KE DL+14,112 
32666 POKE DLt22, 112 : POKE 0Lt23,112!P0 
KE DLt24,65iP0KE DL+25, PEEK (560) i POKE 
DLt26,PEEK(561) :P0KE 83 ,39 
32668 POSITION 20,0!? 
; POSITION 0,7; 




32672 
32674 
[POKE 

S;? ; 

32676 

32678 

(E$), 

662 

32680 

32682 

K = l T 

H 1,3 

32684 

OTO 3 

32686 

»256 

3268B 

tOFS; 

32690 

Y TO 

OSITIi 

32692 

TO 32 

5ITI0I 

32694 

FOR X 

! ? * ? 

32696 

32698 

FOR X 



POKE 559,34;RETURN 

GRAPHICS OlPOKE 559,e;P0KE 766,1 

82,0;P0KE 83,39!P0SITI0N 0,3:? L 

:? ;? "C0NT";P0SITI0N B,8 

POKE e42,13;5T0P 

POKE 842,12;TRaP 32682 : A'USR (ADR 
UAL(L$)l:IF A = 4 THEN POP I GOTO 32 



RETURN 

GOSUB 32662;S0UND 0, 75, 10, 8 : FOR 

20;next x;souhd o,e,o,o:POSiTio 

? "SYNTAX ERROR!";POKE 766,1 

POKE 83,38;P0SITI0H 1,10:7 SU$;G 
2624 

LINE=PEEK (5TMT0B) tPEEK (STHTABtlJ 
IF LINE>32599 THEN 32690 

0FS=PEEK(STMTABt2) : SIMTAB=STMTAB 
POSITION 1,9:LIST LINElGOTO 32624 

POKE 76e,0;P0SITI0N I.IB:? "READ 
OUIT"!;IHPUT ASlIF AS<>"Y" THEN P 
ON 1,10;? B$(l,38) :G0T0 32624 

GRAPHICS O:? 1? :? :FOR X=3269e 
636 STEP 2:? X:HEXT X:? "CONT":PO 
N 0,e:POKE B42,13:ST0P 

POKE B42,12:CRAPHIC5 Bl? 1? 1? : 
=32638 TO 32674 STEP 21? XINEXT X 

"C0HT";P05ITI0N 0,0 

POKE B42,13:5T0P 

POKE B42,1Z:GRAPHICS 01? 1? 1? I 
=32676 TO 327B2 STEP 2:? X:NEXT X 
POKE 84Z,12"lP0SITI0N 8,8 



32700 POKE 842,131ST0P 

32702 POKE 16,1121P0KE 53774, 112 1 RETUR 

N 



CHECKSUM DATA. 

fsee issue 39's Unicheck) 



32600 DATA 6,665,923,757, 885, 171, 225, » 
90,532,499,910,267,512,144,735,8453 
32638 DATA 57,358,230,693,706,878,317, 
127,36,557,238,258,182,430,166,5315 
32668 DATA 864,553,472,385,887,724,72, 
687, 508, 736, 625, 612, 672, 184, B91, 9672 
32698 DATA 8,856,85,545 



Listing 2. 
BASIC bsting. 



10 DIM L$(1201,t<L$(115],A$(lI 
20 GRAPHICS B:P0KE 710,0;? "SISK OR S« 
S5ETTE"; lINPUT ASlIF «S<>"C" AND AS<>" 
D" THEN 20 

30 IF AS="C" THEN 58 

40 ? "PLACE FORMATTED DISK IM DRIUE":? 
"THEN PRESS RETURN" ; INPUT LS;0PEN ttl, 
B,0,"D;ML.DAV";GOTO 60 

50 ? ;? "READY CASSETTE, PRESS RETURN" 
;;INPUT L$;OPEN Bl,8,0,"c;" 
60 L$="32608 MS (1) =" ; LS (13) =CHRS (34) 
70 N=119;G05UB 130 ; LS (14) =ML$ (1, 58) ; LS 
(LEH(L$) tl)=CHRS134) ;? H1;L$ 
80 LS{l)="326ie MS(59)=";L$(14)=CHRS(3 
4) ;LS(15)=ML$(59) lL$(LEN(LS)tl)=CHRS(3 
4) :? »1;LS 

90 LS(1)="32612 S$=";L$(16)=CHRS(34) 
100 ML$="";N=98;G0SUB 130 ; LS (11) =ML* ;L 
$(LEH(LS)+1)=CHRS(34) 1? ni;L$ 
110 LS(1)="32614 E$=":LS(10)=CHR$(34) 
120 MLS="":N=65; GOSUB 136 ; LS (11) =ML$ ! L 
S(LEN(LS)H)=CHRS(34) ;? aiJLSlEND 
130 FOR X=l TO N;READ A ; MLS (X) =CHR$ (A) 

;hext X;Returm 

140 DATA 104,104,133,204,104,133,263,1 

04,104,133,205,169,0,141,3,6,141,2,6,1 

41,4,6,141,5,6 

150 DATA 141,6,6,238,3,6,32,68,218,172 

,2,6,177,203,133,212,32,170,217,32,182 

,221,32,68,218 

160 DATA 173,3,6,133,212,32,178,217,32 

,215,218,32,218,217,165,212,141,8,6,16 

5,213,141,1,6,24 

170 DATA 173,8,6,189,4,6,141,4,6,173,1 

,6,185,5,6,141,5,6,144,3,238,6,6,238,2 

180 DATA 6,172,2,6,156,205,208,176,173 

,4,6,133,212,173,5,6,133,213,56 

190 DATA 104,104,133,204,184,133,203,1 

84,104,141,255,6,169,8,133,213,216,165 

,88,133,205,165,85,133,286 

200 DATA 174,255,6,24,165,205,105,40,1 

33,205,144,2,230,206,202,208,242,160,8 

,177,205,201,64,144,18 

210 DATA 201,96,144,19,201,128,144,18, 

201,192,144,6,201,224,144,7,176,8,24,1 

05,32,144,3,56,233 

220 DATA 64,145,203,200,152,114,240,2, 

200,215,177,203,201,32,208,3,136,288,2 

47,200,132,212,56 

238 DATA 104,104,141,254,6,184,141,253 

,6,169,0,133,213,216,165,136,133,205,1 

65,137,133,206,160,0,177 

240 DATA 205,205,253,6,208,8,200,177,2 

05,205,254,6,240,15,160,2,177,205,24,1 

01,205,133,205,144,228 

250 DATA 230,206,176,224,160,4,177,205 

,201,55,240,4,168,8,248,0,132,212,96 



CHECKSUM DATA. 

(see issue 39's Unicheck) 



10 DATA 203,265,465,844,294,973,652,27 
0,978,797,278,275,835,285,301,7635 
30 DATA 355,54,254,428,535,848,588,41 ^_ 
,574,564,5435 ^ 



OCTDBEH A.N.A.L.O.B. Computing 





by Arthur Leyenberger 



ecently I was on a business trip that 
took me to Los Angeles. My busi- 
ness meetings were sclieduled for the 
end of the week, so rather than re- 
turn to the East Coast on Friday night 
via a "red eye" flight, I decided to stay the 
weekend and enjoy the Southern California 
experience. I spent two days with a childhood 
buddy. 

Normally, LA is not really my kind of 
place, but I always try to make the best of 
my business travels; I try to do something a 
little different in whatever city I happen to 
be visiting. As it turned out, LA was a great 
place to do something "a little different." 

You see. National Car Rental has a deal 
they call "California Classics" available only 
at LA International Airport and in Reno, Ne- 
vada. California Classics refers to vintage 
automobiles that can be rented just like or- 
dinary cars for as long as you want. Instead 
of renting just another "jelly bean" (like a 
Taurus or one of its imitators), you can be 
seen tooling down Wilshire Boulevard in a 
'57 Chevy, a '62 Caddy convertible or per- 
haps a '52 Lincoln. 

So I dropped off the company-paid-for 
"no-name" econobox, picked up a 1962 
Thunderbird convertible and headed south on 
the 405 to see my buddy, Mike. If cars were 



measured in smiles-per-gallon, this T-Bird 
would be the ERA's number-one choice in 
America. You wouldn't believe the reactions 
I got— waves, smiles, thumbs-up— it made me 
feel good to be alive and well in sunny South- 
ern California. 

The weekend was a blast. Cruising had 
never been this good— top down, blue skies, 
oldies tunes on the radio— I hadn't felt so 
good in a long time. After I returned to New 
Jersey (I did take a "red eye" after all), I start- 
ed thinking about that 27-year-old T-Bird. I 
also started thinking about the Atari 8-bit 
computers. 

Driving the T-Bird for two days was a real 
experience. Aside from the "feel-good fac- 
tor," the car was, in some ways, showing its 
age. Sure, it seemed mechanically safe (I 
should hope so), but it didn't have any of the 
modern features that many of us take for 
granted even in inexpensive cars. Fuel econ- 
omy was in the single digits and no shoulder 
belts were available. 

The Atari 800 sitting on the desk next to 
me is a lot like that '62 T-Bird. Like the car, 
the 800 is at least one, if not two generations 
old. By today's standards, the 8-bit 6502 
microprocessor is slow and incapable of the 
latest "gee-whiz" graphics available on 
machines like the ST. Just as you would prob- 
ably find it difficult to obtain parts for the 
T-Bird, few, if any new 8-bit Atari programs 
are available. 



The analogy could be taken even further, 
but my point is that the 800 (as well as the 
XL, XE and XEGS models) fulfills a need 
just like that T-Bird. The T-Bird is fun, fun, 
fun and so are the 8-bit Atari machines. More 
important, 8-bit users know their computers 
are still functional and can perform the bas- 
ics of computing and more. Excellent word 
processors, spreadsheets, telecommunica- 
tions and graphics programs are still avail- 
able for the Atari computer, making it useful 
for both serious and leisure computing ac- 
tivities. 

Many 8-bit users have not traded up to an 
ST or other computer (perish the thought) for 
one simple reason: Their computers still 
satisfy their computing needs. A wealth of 
programming languages makes it an excel- 
lent machine for program development, and 
the graphics are still superior to other 
machines in its class. A lot can be done with 
an Atari 8-bit computer, and the hundreds of 
thousands of users prove it. 

I enjoyed driving that '62 T-Bird converti- 
ble, just as I enjoy using my Atari 800. 1 was 
introduced to the world of microcomputers 
through the 800. The 8-bit Ataris may be 
showing their age compared to the latest in 
computing technology, but they stUl can com- 
pute. And that's what it's all about, isn't it? 



Well, the 40th Consumer Electronics Show 
is now history. Attendance at the latest Sum- 
mer CES in Chicago marks my 14th semian- 
nual trip into consumer electronics nirvana. 
Here, the near- and sometimes long-term fu- 
ture of car audio, home office and photo- 
graphic products, audio and video hardware, 
entertainment products, car and home secu- 
rity and home automation is shown for all to 
see. The equivalent of 17 football fields' 
worth of exhibit space showcases almost one 
hundred categories of products. 

Atari was at CES, but their emphasis, as 
before, was on games. That's not bad, just 
consistent with Atari's new focus. According 
to Atari, COMDEX (the COMputer Dealers 
Exposition) is the correct forum for their 
computer products, whereas CES is appropri- 
ate for their entertainment products. However, 
there was an ST attached to a MIDI program 
on one outside corner of their booth, as well 
as a couple of the Atari MS-DOS clone 
machines. 

The big news at the Atari booth was the 
introduction of the Atari Portable Color En- 
tertainment System (PCES). In Atari's words, 
it is "the world's first color portable hand- 
held video game system." Actually, they don't 
have a name for it yet, so I'll refer to it as 



OCTOBER A.N.A.L.O.B. Computing 



the PCES for now. 

What is the PCES? Hype aside, it's a hand- 
held game machine. Using a 3.5-inch built- 
in color LCD screen, the PCES can display 
graphics with up to 16 simultaneous colors 
from a palette of 4,096 colors. Resolution is 
160 by 102 pixels, not very good by most stan- 
dards but adequate when viewed on the small 
LCD display. Also, it uses a 16-MHz proces- 
sor, which is faster than other video-game 
machines, like Nintendo and Sega. 

The PCES is a completely self-contained 
unit. Slightly larger than a videocassette and 
weighing about a pound, it can be used in- 
dividually or linked with up to eight other 
units for multi-player games. The system has 
64K RAM and runs on six "AA" batteries. 
It can also be powered by an AC adapter or 
used with a cigarette-lighter adapter. 

Main controls of the PCES consist of an 
eight-way "joypad," four fire buttons, two op- 
tion buttons, a pause and an on/off switch. 
Other features include a headphone jack for 
quiet operation, the ability to rotate the screen 
image 180 degrees so that both right- and left- 
handed players can play (a logical option giv- 
en the unit's butterfly shape), four-channel 
sound and volume and screen-contrast 
controls. 

Games will be available on credit card- 
sized ROMS that slip into the unit. These 
game cards, which will sell for "under $35," 
typically contain 256K bytes of program and 
data, but are capable of holding as much as 
two megabytes of information. Epyx's 
California Games (an action game familiar 
to many Atari 8-bit and ST owners) will be 
bundled with the unit. Five other games— 
Blue Lightning (a first-person jet fighter 
game) , Time Quests and Treasure Chests (an 
adventure/strategy game). Gates ofZendocon 
(an arcadelike action game). Impossible Mis- 
sion (an action/adventure game) and Monster 
Demolition (an action game)— will also be 
available at the time of the PCES release. 

Atari is working closely with Epyx to de- 
velop more titles for the PCES. They also 
hope to interest third-party developers in the 
system so that the potential PCES user has 
dozens of games to choose from. The retail 
price of the Atari Portable Color Entertain- 
ment System is $150. It is scheduled to be 
available this fall, in time for the Christmas 
season. 

The Inside Story 

I wouldn't be able to live with myself un- 
less I told you the inside story on Atari's 
PCES. After all, that's what makes End User 
so exciting, right? Anyway, here's the scoop: 
The PCES was developed by Epyx in-house 



and the rights to it were sold to Atari literal- 
ly moments before CES began. 

Yup, Atari does not acknowledge publicly 
that Epyx designed and developed the PCES. 
You see, I and other ANALOG editors got 
a glimpse of the PCES prototype at the last 
Consumer Electronics Show, held in January 
in Las Vegas. We had to sign a nondisclosure 
agreement with Epyx before we were allowed 
to see the machine. In fact, ANALOG'S sis- 
ter publication, VideoGames and Computer 
Entertainment, was going to run an exclusive 
cover story on the PCES in a summer issue. 
Epyx told us they were delaying the in- 
troduction of their portable game machine, 
originally scheduled for the summer CES. 
When we arrived at Chicago's McCormick 
Place for the first day of CES, we were sur- 
prised to see Atari demonstrating the unit. 
Sources told us that the final contract between 
Epyx and Atari had not been signed until just 
hours before the show started. Apparently, 
negotiations had been going on for some 
time. 

It was obvious from the poor quality of the 
section of the Atari booth used to present the 
PCES (a couple of black-and-white posters) 
that the arrangements were done at the last 
minute. In addition. Atari placed no pre- 
announcements of the product in any of the 
daily trade magazines. Compared to Ninten- 
do, which was also presenting a hand-held 
video game called the Game Boy, Atari's ef- 
fort seemed lackluster. 

Epyx wasn't discussing the Atari hand-held 
game deal at all. Rumors suggested that Epyx 
ran out of cash during the development of the 
product and was seeking someone or some 
company to bail them out. Interestingly, one 
Atari spokesperson told me that Atari now 
owns 40 percent of Epyx. This, however, was 
vehemently denied by the Epyx PR person. 

The Competition 

Nintendo is clearly the biggest name in 
video games right now. Their booth, some 
50,000 square feet, hosted dozens of Ninten- 
do licensees. Also shown at "Nintendo Vil- 
lage" was their new portable game machine, 
the Game Boy. 

The Game Boy is a $90 hand-held unit that 
weighs about ten ounces and operates on four 
"AA" batteries. Unlike the Atari portable 
game machine, the Game Boy uses a mono- 
chrome non-backlit LCD screen. The unit 
features stereo sound and has a headphone 
jack. In addition, two Game Boys can be 
joined together via a cable for two-person 
games, such as baseball and tennis. 

Nintendo has the advantage when it comes 
to game titles. Packed with the Game Boy 



will be Tetris, and other popular titles, such 
as Super Mario Brothers, will be available 
immediately. Also, the game cards for the 
Nintendo unit will be priced at "under $20." 

It is only natural to compare the Atari 
PCES with Nintendo's Game Boy. The Atari 
game is easier to see because of its color and 
backlighting. In addifion, the Atari screen is 
larger than that of the Game Boy. However, 
Nintendo has a larger presence in the game 
market and will, no doubt, launch a major 
advertising and promotion campaign. Given 
Atari's track record when it comes to adver- 
tising, who knows what they will do to pro- 
mote the PCES. 

Ultimately, it will be interesting to see how 
each of these portable games fares in the mar- 
ketplace; a repeat of the early Atari 800 days 
could happen. You'll recall that in the early 
1980s, when the Atari 800 was originally 
competing with the Commodore 64, the su- 
perior sound and graphics of the 800 never 
overcame the superior marketing and pric- 
ing of the Commodore 64. Nintendo is now 
as powerful (or more so) than Commodore 
was in its heyday. 

The Rest of Atari 

In addition to the Atari portable game and 
a couple of computers here and there, the fo- 
cus of Atari's booth was games for the 2600, 
7800 and XE game systems. Twenty new ti- 
tles, which will be available by the end of the 
year were announced for these three systems. 
Atari has also lowered the prices of two of 
their game machines to $50 for the 2600 and 
$70 for the 7800. In addition. Atari has made 
available light guns for the 2600 and 7800. 

The wackiest part of Atari's booth was their 
display of a full line of calculators. To me, 
selling calculators is just another sign that 
Atari, as a corporation, lacks focus. An old 
adage suggests that if you try to do too many 
things, you will not do any of them well. Per- 
haps Atari should listen to this advice and 
concentrate their limited resources on just a 
couple of product lines— such as computers 
and games. 

As I've said many times before, the Con- 
sumer Electronics Show is always interest- 
ing. Of all the new technology that is 
displayed, there is usually some neat stuff that 
really appeals to me. And though Atari may 
no longer be the leader in video games or 
low-cost/high-power computing, they never 
fail to surprise me. 

Arthur Leyenberger is a freelance writer 
who lives in beautiful New Jersey. He can be 
reached on CompuServe at 71266,46, or on 
DELPHI as ARTE. fl 



OCTOBER A.N.A.L.a.Q. Computing 



ERROR MANUAL 



(continued from page 81 



;&J>^ 5130 D6TA 19, LOAD PrograH Too Long 
[yjSs 528Q DATA 20, BOD Device «; tt's 1-7 onl 

*" y 

5210 DftTft 21,L0ftD File ErrorjHOT SftUE 

forhiat 

5220 DftTfl 128, BREAK Key fibort during I 

/o 

5230 DftTfl 129,I0CB Error; file already 

OPEN 

5240 DftTfl 130,H0NEKISTflNT Dewice;?FILE 

NAME 

5250 DftTft 131,I0CB Write Onlyjcant REfl 

D it 

5260 DATA 132, INVALID Hndlr CHd;?KIO o 

r IOCS 

5270 DftTft 133, DEVICE or File not OPEN 

5280 DATA 134, BAD lOCB tt; 1-7 only in 

BASIC 

5290 DATA 135,I0CB Read Only ERR;cant 

write 

5300 DATA 135, END OF FILE 

5310 DATA 137, TRUNCATED Record; 7INPUT 

line 

5320 DATA 138, DEVICE TiMeout; ?UNIT or 

?DEV « 

5330 DATA 139, DEVICE NAK;?I/0 CMd or ? 

cables 

5340 DATA 140, LOST data on serial I/O 

bus 

5350 DATA 141, CURSOR Out Of Range;?GR 

Mode 

5360 DATA 142, SERIAL Data Owerrun;?too 

fast 
5370 DATA 143, SERIAL BUS Data Frawe CK 
SM ERR 
5380 DATA 144, DEVICE Done;walid CMd ?r 

esponse 

mmsm^^^m: ~ ' 



VL 5390 DATA 145, INVALID GR Mode COMMand 
PP 5400 DATA 146, FUNCTION Not iMplehiented 
BP 5410 DATA 147, HOT enuf RAM for GR Mode 
DD 5420 DATA 148, UNRECOGNIZED disk forMat 

Sparta 
RR 5430 DATA 158, DIRECTORY not fOUnd-Spar 

ta 
KL 5440 DATA 151, FILE ExiStS-Sparta 
GD 5450 DATA 152, NOT binary file-Sparta 
RK 5460 DATA 154, LOADER-SYMBOL not define 

d-5parta 
PY 5470 DATA 158, OUT Of MeMory Sparta 
GH 5480 DATA 160, DRIVE U ERR;?not in syst 

PF 5490 DATA 161, TOO Hany OPEN FILES;?buf 

fers 
VN 5500 DATA 162, DISK Ful 1 ; KI0tt254=f orwat 

new 
PW 5510 DATA 163, FATAL SystCH I/O ERR;?ba 

d DOS 
HI 5520 DATA 164, FILE B MiSMatCh; ?POINT O 

r file 
YU 5530 DATA 165, INVALID FILENAME; ?len ? 

Chars 
CV 5540 DATA 166, POINT Data Length ERR 
KZ 5550 DATA 167, FILE LOCKED; XI0tt36=unlOC 

k 
KU 5560 DATA 168, INVALID Device COMHand 
YN 5570 DATA 169, DISK DIR FULL; XI0«254=f O 

rnat 
EG 5580 DATA 170, FILE Not Found; ?FILENAME 
DI 5590 DATA 171, POINT Invalid; ?FILE upd 

ate 
PS 5600 DATA 172, ILLEGAL Append to DOS I 

file 
TU 5610 DATA 173, BAD sectors during FORMA 

T 

JH 5620 DATA 255, ERROR Manual by Mat«Rat- 

Cc} ANALOG 
YZ 5630 DATA 0,END OF ERROR MANUAL 
EH 9000 DATA -l,End Of ERROR Manual data 




INTRODUCING 





SPECIAL CHARTER SUBSCRIPTION RATES 

6 ISSUES 
ONLY $13.95 

SAVE 40% OFF 
1 THE COVER PRICE< 



a SIGN ME UP FOR 6 ISSUES OF LAPTOP MAGAZINE FOR ONLY $13,951 

D PAYMENT ENCLOSED D BILL ME CHARGE MY D VISA D MC 

No EXP SIGNATURE 



STATE _ 



ZIP_ 



Money back on unused subscriptions if not completely satisfied. Foreign add $7. Make checks 

payable to LFP, INC., Your first issue will arrive in 6 to 8 weeks. Watch for it. 
CJWYV 0««re«plr«»Nev»mb«ra«, 1989. 



OCTOBER A.N.A.L.O.Q. Computing 



& Computer Enleitainmenf 



P 




ALL COLOR ISSUES- 
ONLY $19;95.; 

Save dvei; $1 5 off the cover price! 



'i^,m 






r 


f^t^EfSfc-TMi 




EiROIRE 


t 






^ ^\l- 


, 1 f ^£a ! 






/ 











GA.JVIE- REVIEWS . 

• ar'cade ACTro,N : ■ .! 

• StRiPiTEGY GU/dES , 

• fEC.HNICAU REPORTS 

f COMPI/VeR* SOFTWARE'. • 



Videogames 

& Computer Entertainment 

P.O. BOX 16927, N. HOLLYWOOD, CA 91615 

LJ I wwb Sign me up for 12 issues for only $19.95 — I'll save over $15! 

D Payment Enclosed — Charge My D VISA D MC NAME 

* EXP ADDRESS 



Yes! 



SIGNATURE. 



CITY. 



STATE. 



ZIP_ 



Your first issue wili arrive m 6 to 8 weel<s. 

Money back on unused subscriptions if not satisfied! WATCH FOR IT!! 
Foreign— add $10for postage. oH.r.xpir«N»«mb.r26,i9e9. 



CJWYA 



If you get 

them, you 

will receive a 

random bonus 

from 1,000 to 

10,000 points. 




3y Frank Martone 



CRUNCSvES 




elcome to the amazing world of Tx 
Cruncher. What is Tx? It's a little 
demon that just loves to feed on 
electric energy. Tx lives on an 
electric grid, happily spending 
his time munching on a variety of power cells. 
The different power cells are called Popo, 
Kentu and Circa. 

Popo are diamond shaped and worth 100, 
points, Kentu are cross shaped and worth 250 
points and Circa are circular and worth 500 
points. Each progressive screen will have 
more and more power cells. If you get really 
lucky, you may be able to find a magic star 
or two, which is worth a whopping 5,000 
points. 

Tx does not live alone on the electric grid, 
however. He has some lovely neighbors, the 



Hulk Robots, and they just hate it when 
someone starts eating their power cells. In the 
beginning there will be only one robot after 
Tx. But as your score progresses and the 
damage to their power cells increases, more 
Hulk Robots will be sent after Tx. A maxi- 
mum of three will attack him at once. These 
robots also have the ability to lay out traps 
on the grid. If Tx snags one of these traps, 
or if he bumps into a Hulk Robot, you can 
bet he'll lose one of his five lives. 

Tx does have an amazing power, though: 
He can send himself to Hyperspace one time 
on each screen. If you press the joystick but- 
ton, Tx will disappear and reappear in a 
different spot— hopefully, a safer one, al- 
though I have seen him land on a trap 
sometimes. 



You have to stay alive for only 75 seconds 
on each screen; you will then automatically 
advance to the next screen. After every three 
screens you will enter a bonus screen, where 
you must grab five magic stars while avoid- 
ing the traps. If you get them, you will re- 
ceive a random bonus of from 1,000 to 10,000 
points. If you hit a trap, you lose the bonus 
round. 

Go get 'em, Tx! 



Frank Martone's interest in computers 
started in junior high school, where he learn- 
ed BASIC programming. He got his first com- 
puter, an Atari 400, when he was 12. Within 
two years his first game was published. He 
is now 21. n 



OCTOBER A.N.A.L.O.O. Computing 



S3 



LISTING 1 : BASIC 



B REM TX CRUNCHER 

1 REM COPYRIGHT fC) 198? ANALOG COMPUT 
ING 

2 REM BY FRANK MARTDNE 1/23/89 

3 REM 

4 GRAPHICS 17:P05ITI0N 0,10:? tJ6;"A.N. 
Ifl.L.O.G PRESENTS ":POKE 7e8,15;SN 

=0:GOSUB 1000;G0SUB 3000 
[S G05UB 488;GRAPHICS 1+16 ; 5ETCOL0R 0,8 

,10:SETC0L0R 2,RND tO)»14,9;TUM=5;SC=0: 
I BR5 = 30:DIFF=4 00: 51=19: 52=28 ;CTT=0 
Is POKE 756,CH/256:BI=S:S3=l;S4=23;55=0 

:56=3:EG=17:G0B=13 
I 7 SCR = PEEKt8B)+256»PEEK{893 ^^ 

Is FOR G=2 TO 22:P 0SITI0N 0,G|? t>6;"ai]a 

lUlUUilMlUUlUUMIU" : sound o, g,io,g :50UN 

|D 0,0,0,8:NEHT G:HYP=1 

111 FOR B=l TO BRS:K1=INT<:RND t03»19) ;K2 

=INT(RNDt03»28)+3:P05ITI0H K1,K2:? tJ6; 

"C":SOUND 8,30,18,18 
I 12 FOR HJ=0 TO 1:NEXT HJ:50UND 8,0,0,0 

:NEXT B 
I 13 FOR T=l TO EG:El=INTtRNDC83«19) :E2 = 
I INTtRND t8)*205+3:Pe5ITION E1,E2:? «6;" 

•:50UND 0,288,10,10 
I 14 FOR HJ=1 TO 3:NEXT HJ:SOUND 0,0,0,0 

:NEXT T 
I 15 FOR C=l TO G0B:P05ITI0N RNDC0J*18,R 

NDC0)»18+3:? «6;"j";50UND 0,C,6,10:50U 

ND e,o,0,e:NEXT C 

16 X=9:Y=18:U=18:TIME=8 
1 17 COLOR e:PL0T 7,18:DRANT0 12,ie;PL0T 
7,ll;DRAWT0 12,11:PL0T 7,12:DRAWT0 12 
j,12 ^ 

I C^": POSITION X,Y:? «6;" " 
119 FOR G=l TO 80:S0UND 8 , G»3, 8, 10 : NEXT 
G:50UND 8,8,8,8:P05ITI0N 16,1:? «6;"+ 

":TIME=76 
I 28 5CR = PEEKt883+256«PEEKC893 :P05ITI0N 

9,1:? «6;INTCTIME);" ";:G0SUB 4100 

21 ST=5TICKt03 :TR=STRIGC03 :TP=SCR+K+28 
»Y:POKE 789,14:P0KE 77,8 

22 IF TR=e AND HYP=1 THEN G05UB 2851 
31 P85ITI0N 1,1;? «6;SC:P0SITI0N 17,1: 
? «6;TUM:5ETC0L0R 3, PEEK 153778) , 14 

) 32 LOCATE X, Y,BC 

I 33 IF BC=35 THEN FOR G=l TO 4!F0R R=-l 

I 5 TO 15 STEP 3:S0UND 0, ABS tR) +35, 18, 10 

:NEXT R:NEXT G:SC=5C+5888 
135 SOUND l,8,0,e;TIME=TIME-8.5:V=V+l:I 

If time<i then goto 7000 

1 47 if bc=247 then for w=15 to 8 step - 

2;s0und 8,10,6, w:next w:sc=sc+188 
i 48 if bc = 59 then for h=1s to step -2 

:sound 0,m»3,18,w:next w:5c=sc+258 
i 49 if bc=106 then for h=78 to 11 step 

-s:sound 0,w»4,18,8:next w:sc=sc+s08 
i 58 poke scr + x + 28»y,v 

I 51 POKE 709,B:IF X>18 THEN POKE SCR + X+ 
28»Y,B:X=X-1 

52 IF X<1 THEN POKE SCR+X+28»Y, 8 : X=X+1 

53 IF Y<3 THEN POKE SCR+X+20KY, : Y=Y+1 

54 IF Y>22 THEN POKE 5CR+X+20»Y, : Y=Y- 
1 

55 IF RNDtO)»6<2 THEN GOSUB 588 

57 IF RND(e3»5<2 AND SO20000 THEN G05 
UB 550 

58 IF RND(8)»4<2 AND 5058888 THEN GOS 
UB 580 
68 SOUND 8,0,8,8:IF BC=45 THEN GOTO 28 

I 88 

j 61 IF X=S1 AND Y=S2 THEN GOSUB 388 

62 IF X=S3 AND Y=54 THEN GOSUB 388 

63 IF X=S5 AND Y=S6 THEN GOSUB 388 

64 IF SO100888 THEN POKE 718,PEEKtS37 
178) 

65 IF 5038888 AND PEEK (53778) =44 THEN 
GOSUB 108 

80 IF g>18 THEN U=9 

81 POKE 789,0:P0KE 709,14:IF RNDtO)»DI 
FF<13 THEN POSITION RND t0)»19, RND CO) «1 
8 + 3:? t«6;"-":S0UND 8,255,10,5 

82 GOTO 20 

99 REM — MAGIC STAR APPEARS! — 

100 POSITION RND tO)»19,RHDtO)*18+4:? « 

6;"a" 

181 FOR R=2 TO 2e:50UND 0, R«4, 18, 18 : SO 

UND 1,R»8,18,10:P0KE 712, R»5 : SOUND 2,R 

,10,1O:POKE 712,R:NEXT R 

102 POKE 712,B:F0R T=8 TO 3:S0UND T,8, 

e,e:NEXT T:RETURN 

380 P8SITI0N X,Y:? «6;"+":F0R G=14 TO 

1 STEP -l;FOR W=l TO 25:NEXT W:SETCOLO 

R e,12,G:S0UND B,G,1B,G 

391 SOUND 1,G+2,10,G:NEKT G:SETCOLOR 

,12,14:S0UND 8,B,B,8:S0UND 1,0,8,0 

302 FOR EK=4 TO 6:P0KE SCR+X+20»Y, EX ; F 

OR M=l TO 30:NEXT M:S0UND 0,10,8,18;NE 

KT EX:POKE SCR+X+20ifY,8:X=9:Y=18 

«0 303 FeR S=0 18 2:S0UND S,0,0,0:NEXT S 

XM 304 TUM=TUM-1 

RI 305 IF TUM=8 THEN GOTO 5000 

OY 306 FOR L=15 TO 1 STEP -0.3:SOUND 1,L, 

■ 6,L:S0UND 2,L,6,L:NEXT L 
318 FOR R=0 TO 2:S0UND R,0,0,8:NEXT R 



j311 POSITION S1,S2:? »6; POSITION S 

3,S4:? tt6;" ■':POSITION S5,S6!? tt6;" " 
312 Sl=3: 52=19: 53=18: 54=19 :S5=3:S6=3:S 
ETCOLOR 0,8,18 

(328 RETURN 
400 GRAPHICS 18:P0KE 711,88:51=19:52=1 
8 :S3=2: 54=18 :S5=B; 56=5 

1410 POSITION 1,5:? »6j"iinaEiEnHinE3 

i[jJ33i]":SN=SN+i 

'|411 POSITION 9,8:? tt6;"0";SN 

|412 FOR G=l TO 20 

|428 FOR D=1S TO STEP -2:S0UND 8,14,1 
8,D;P0KE 788,D:NEXT D:NEXT G:RETURN 
499 REM ROBOT INTELLIGENCE ROUTINE 

|500 SNK=5CR+51+20»S2:SU=58 

1510 POKE 5NK,e:S0UND 0,20,6,10 

1521 IF Y<52 AND X=S1 THEN S2=S2-1:G0T0 
529 

|522 IF Y>S2 AND X=S1 THEN 52=S2+1:G0T0 
529 

J52S IF X<51 THEN 51=51-1 ! SU=58 
526 IF X>S1 THEN 51=51+1 

529 POKE SCR+Sl+20»S2,Sg 

530 RETURN 

550 SNK1=SCR+S3+20»S4:SU=58 
555 POKE SNK1,0:SOUND 0,10,6,18 

I557 IF X<S3 THEN 53=53-1 : 5U=58 

558 IF X>S3 THEN S3=S3+1 

559 IF Y<S4 AND X=S3 THEN 54=54-1 
568 IF Y>S4 AND X=S3 THEN S4=S4+1 
561 POKE SCR+S3+28»S4,Si; 
570 RETURN 

580 SNK2=SCR+55 + 20»S6: 511=58 
585 P8KE SNK2,0:SOUND 0,3,6,5 

587 IF X<S5 THEN S5=S5-1 : SU=58 

588 IF X>S5 THEN 55=55+1 

589 IF Y<56 AND X=S5 THEN 56=56-1 
598 IF Y>S6 AND X=S5 THEN S6=S6+1 
591 POKE SCR+S5+2B»S6,SW 
595 RETURN 

1000 REM — CHARACTER SET — 
1018 CH=tPEEK tl06)-8)»256 
1015 FOR 1=0 TO 512:P0KE CH+I, PEEK C573 
44+1) :NEXT I 
1020 RESTORE 1100 

(1030 READ A:IF A<8 THEN RETURN 

|l048 FOR J=0 TO 7:READ B:POKE CH+A»8+J 

,B:NEXT J 
jiOSO GOTO 1838 

11899 REM — REDEFINED CHARACTERS — 
jllOO DATA 10,20,62,127,93,73,127,99,62 
jlllO DATA 11,20,62,127,93,73,127,119,6 
12 

;1115 DATA 12,20,62,127,127,127,127,127 
1,62 

!ll20 DATA 4,8,0,4,8,16,8,64,8 
J1125 DATA 5,1,66,8,34,8,54,28,128 
51138 DATA 6,8,0,4,8B,8,20,B,B 
91148 DATA 2,255,8,255,8,255,8,255,8 
51143 DATA 58,60,126,231,255,189,189,24 
!,36 
yil46 DATA 27,56,16,186,238,186,16,56,8 
JI1147 DATA 55,8,16,48,84,48,16,8,8 
^1149 DATA 63,7,5,7,56,40,184,128,128 
"11158 DATA 42,16,68,8,146,8,68,16,8 
!ll70 DATA 3,146,84,16,238,16,84,146,8 
,1175 DATA 26,0,0,0,0,0,0,1,3 

1177 DATA 28,8,8,8,8,8,8,128,192 

1178 DATA 29,7,7,7,15,15,15,15,7 
%1179 DATA 38,255,156,8,8,287,8,156,255 

MII88 DATA 31,224,224,112,112,112,112,2 
'^ ■^40,224 

m 1181 DATA 32,7,3,7,24,48,24,4,0 

Hf;il82 DATA 61,189,195,255,126,60,24,24, 


ill83 DATA 62,224,192,224,24,12,24,32,8 

!1184 DATA 49,8,0,8,255,0,255,0,0 

1198 DATA 8,178,77,178,77,170,77,170,7 
7 

at' 1191 DATA 13,66,129,36,0,0,36,129,66 

1192 DATA 7,6,13,14,8,68,66,34,28 

ti 1193 DATA 1,8,0,0,0,8,0,0,0 

fG^jll94 DATA 1,44,56,66,3,2,4,0,9 

afell95 DATA 1,14,16,66,4,2,4,4,5 

^B'll96 DATA 1,44,55,68,8,0,0,1,6 

g.Kril97 DATA 1,14,15,18,1,0,1,1,1 

Sp," 1198 DATA 1,57,85,58,7,0,3,8,9 

W 1199 DATA 1,17,15,51,1,0,1,4,4 

fl2Be DATA 1,19,19,99,9,9,9,2,4 

1281 DATA 1,14,16,66,4,2,4,4,5 

1282 DATA 1,8,8,8,6,8,0,0,0 

•%jSd;i283 DATA 1,19,19,99,9,9,9,2,4 

iSV 1205 DATA 1,57,85,58,7,0,3,8,9 

gZ 1287 DATA 1,44,55,68,8,0,8,1,6 

QD 1210 DATA l,B,8,e,8,8,e,B,e 

FB 1211 DATA 1,44,56,66,3,2,4,8,9 

jl212 DATA 1,44,56,66,3,2,4,0,9 

1213 DATA 1,0,0,0,0,0,0,0,0 

J12I4 DATA 1,44,56,66,3,2,4,0,9 

1^1216 DATA 1,0,0,0,0,0,0,0,0 

,W 1219 DATA 1,0,0,8,8,8,8,8,8 

l%,122e DATA 1,19,19,99,9,9,9,2,4 

'1221 DATA 1,19,19,99,9,9,9,2,4 

I1222 DATA 1,17,15,51,1,0,1,4,4 

jl223 DATA 1,57,85,58,7,8,3,8,9 

il224 DATA 1,19,19,99,9,9,9,2,4 



«»»« 1225 DATA 1,19,19,99,9,9,9,2,4 
RE 1226 DATA 1,8,8,8,8,8,8,8,0 
QJ 1238 DATA 1,8,0,0,0,0,0,0,0 
FH 1231 DATA 1,44,56,66,3,2,4,0,9 
OR 1232 DATA 1,0,0,0,0,0,0,0,0 
XS 1233 DATA 1,19,19,99,9,9,9,2,4 
XM 1234 DATA 1,19,19,99,9,9,9,2,4 
01 1235 DATA 1,17,15,51,1,0,1,4,4 
tl 1236 DATA 1,57,85,58,7,8,3,8,9 
VI 1237 DATA 1,19,19,99,9,9,9,2,4 
VM 1238 DATA 1,19,19,99,9,9,9,2,4 
GN 1239 DATA 1,44,56,66,3,2,4,0,9 
OU 1242 DATA 1,8,8,8,0,0,0,0,0 
EX 1250 DATA -1 
OA 2000 FOR R=l TO 4:P0SITI0N X,Y:? 116;"- 

":SOUND O,O,8,0:FOR D=l TO 4 : NEXT DiPO 

SITION X,Y:? «r; SOUND 8,288,18,18 

IP 2BB1 NEXT R 

IB 2018 GOSUB 388:G0TO 20 

UX 2050 REM HVPERSPACE 

FI 2051 POSITION X,Y:? «6; FOR EX=4 TO 

6:P0KE SCR+X+28»Y,EX:F0R W=l TO 5:NEX 

T WINEXT EX 
NE 2052 POSITION X,Y;? t»6 ; " " 
GG 2054 FOR R=15 TO STEP -1:S0UND 0,R,1 

0,R!S0UND 1,R»2,10,R:S0UND 1,R»63,10,R 

:P0KE 712,R+79:NEXT R:POKE 712,0 
NU 2056 POSITION X,Y:? tJ6;" " 
IZ 2057 X=INTCRNDt0)*14)+4:V=INTCRNDC0)»l 

7)+5 
OC 2058 POSITION X,Y:? «6;" " 
KF 2059 FOR EK=4 TO 6:P0KE SCR+X+20«Y, EX : 

FOR H=l TO 5: NEXT W:NEXT EX 
MZ 2060 POSITION X,Y:? «6;" " 
AI 2061 HYP=0 
PZ 2070 GOTO 28 
gP 2999 REM — TITLE SCREEN — 
XE 3fl0e GRAPHICS 17:P0KE 756,CH/256 
FI 3003 POKE 788,122:P0KE 711,15:P0KE 709 

,77 
YX 3005 X=18:V=20 

ip 3006 SOUND 0,0,e,8:P0SITI0N X,Y:? «6;" 
3a+i,.pOp p-j^ TO 15:NEXT DiPOSITIOM X,Y:? 
UB;" ";SOUND 0,20,10,10 

3007 Y=Y-l:IF Y=7 THEN FOR D=15 TO 8 S 

TEP -0.3:S0UND 0, D»33, 8, D : POKE 712, D+4 

5:NEXT D:G0T0 3026 
RY 3008 GOTO 3006 
LS 3026 POKE 712,0:P0KE 708,14:P0KE 710,8 

9 

3827 POSITION 2,9!? t»6;" TX CRUNCHER 



3028 POSITION 2,11!? MB;" 



Q 



3029 POSITION 8,13!? «6; 



ii i r mm iir n i n r i 



u 

BBS 



»6;" by frank Mar 
? a5;"QQQQQQOaQQfiO 



tt6; "CIRCA 

tJ6; "MAGIC STAR 



3040 POSITION 1,16:? 
tone":POSITION 0,22: 
QQQOQOQQ" 

3041 POSITION 0,3!? tt6; "00000800000000 

noQoao" 

3047 FOR D=l TO IDOOiNEKT D ! GOTO 4088 
4000 GRAPHICS 1+16!P0KE 756, CH/256 : POK 

E 708,14:POKE 710,55:P=5 

; 4001 POSITION 4,2:? a6 ; " I J.HiV^jm " 
14802 POSITION 0,3:? 06; "QQOQQQQQQQQOOQ 
QQQOOO" 

4083 POSITION 0,22:? tt6; "0000000000000 
QRQQOOO" 

4004 POSITION 1,P:? »6;"P0PO w 
100":G0SUB 4900 

4005 POSITION 1,P!? tt6j"KENTU H 
250":G0SUB 4900 

4086 POSITION 1,P 
I 500": GOSUB 4900 
I 4087 POSITION 1,P 
I 588B"!G0SUB 4900 

4010 POSITION 5,18:? a6;"PRESS START": 
FOR D=l TO 50:NEXT D 

4011 PBSITION 5,18:? a6;"press start"! 
FOR D=l TO 50:NEXT D 

4015 IF PEEKt53279)=6 OR STRIGtO)=8 TH 

EN GOTO 4038 

4020 GOTO 4010 

4030 FOR 1=0 TO 19:C0L0R : PLOT I,8;DR 

AWTO I,22:NEXT I:GOTO 5 

40S0 GOTO 4058 

4899 REM — JOYSTICK MOVEMENT ROUTINE — 
4188 IF ST=14 THEN UF=1 ! DF=8 : RF=B : LF=0 

4111 IF ST=13 THEN DF=1 ! UF=B : RF=B : LF=0 

4112 IF ST=7 THEN RF=1 ! DF=0 : LF=0 : UF=0 

4113 IF ST=11 THEN LF=1 : RF=0 : DF=0 : UF=8 

4114 IF UF=1 THEN POKE TP,0:Y=Y-1 

4115 IF DF=1 THEN POKE TP,0:Y=Y+1 

4116 IF RF=1 THEN POKE TP,0:X=X+1 

4117 IF LF=1 THEN POKE TP,0:X=X-1 
41S0 RETURN 

4900 FOR D=15 TO STEP -1:S0UND 8,58, 
1B,D:NEXT D:P=P+3!RETURN 

4999 REM — GAME OUER — 

5000 POSITION 17,1:? a6;"B":F0R E=14 T 
STEP -1:SETC0L0R 2,4,E;F0R R=l TO 

ilO:NEXT R!SOUND 0, E, 0, 10 : NEXT E:SN=8 



(continued on page 67) 



OCTOBER A.N.A.L.O.Q. Computing 



UTILITY 




=I>UMn 



For use in machine-language entry, 

by Clayton Walnum 



M/L 



The two-letter checksum code pre- 
ceding the line numbers here is not 
a part of the BASIC program. For 
more information, see the "BASIC 
Editor n" elsewhere in this issue. 



Editor provides an easy 
method to enter our 
machine-language list- 
ings. It won't allow you 
to skip lines or enter bad 
data. For convenience, you may enter listings 
in multiple sittings. When you're through typ- 
ing a listing with M/L Editor, you'll have a 
complete, runnable object file on your disk. 

There is one hitch: It's for disk users only. 
My apologies to those with cassette systems. 

Listing 1 is M/L Editor's BASIC listing. 
Type it in and, when it's free of typos, save 
a copy to disk, then run it. 

On a first run, you'll be asked if you're 
starting a new listing or continuing from a 
previously saved point. Press S to start, or 
C to continue. 

You'll then be asked for a filename. If 
you're starting a new listing, type in the file- 
name you want to save the program under, 
then press RETURN. If there's already a file 
by that name on the disk, you'll be asked if 
you wish to delete it. Press Y to delete the 
file, or N to enter a new filename. 

If you're continuing a file, type in the name 
you gave the file when you started it. If the 
program can't find the file, you'll get an er- 
ror message and be prompted for another file- 
name. Otherwise, M/L Editor will calculate 
where you left off, then go on to the data en- 
try screen. 

Each machine-language program in 
ANALOG Computing is represented by a list 
of BASIC data statements. Every line contains 
16 bytes, plus a checksum. Only the numbers 
following the word DATA need to be con- 
sidered. 

M/L Editor will display, at the top of the 
screen, the number of the line you're current- 
ly working on. As you go through the line, 
you'll be prompted for each entry. Simply 



type the number and press Return. If you 
press Return without a number, the default 
is the last value entered. 

This feature provides a quick way to type 
in lines with repetitions of the same number. 
As an added convenience, the editor will not 
respond to the letter keys (except Q for 
"quit"). You must either enter a number or 
press Return. 

When you finish a line, M/L Editor will 
compare the entries' checksums with the 
magazine's checksum. If they match, the 
screen will clear, and you may go on to the 
next line. 

If the checksums don't match, you'll hear 
a buzzing sound. The screen will turn red, 
and the cursor will be placed back at the first 
byte of data. Compare the magazine listing 
byte by byte with your entries. If a number 
is correct, press RETURN. 

If you find an error, make the correction. 
When all data is valid, the screen will return 
to gray, and you'll be allowed to begin the 
next line. 

Make sure you leave your disk in the drive 
while typing. The data is saved continuously. 

You may stop at any time (except when you 
have a red screen) by entering the letter Q for 
byte 1. The file will be closed, and the pro- 
gram will return you to BASIC. When you've 
completed a file, exit M/L Editor in the same 
way. 

When you've finished typing a program, 
the file you've created will be ready to run. 
In most cases, it should be loaded from DOS 
via the L option. Some programs may have 
special loading instructions; be sure to check 
the program's article. 

If you want the program to run automati- 
cally when you boot the disk, simply name 
the file AUTORUN.SYS (make sure you have 
DOS on the disk.). 



LISTING 1: BASIC LISTING 



«Z IB DIM BF(161,N$(4>, ASCII, B$(11,F$(1S] 

LF 11 DIM H0D$(4) 

■ N ZO LINE=1000:RETRNrl55!BACKSP=126!CNKS 

UM=BiEDIT=B 
CO 38 C05UB 45B!P05ITI0M IB, 6:? "Rtart or 

Hontinue? ";iG05UB SBBl? CHRSCD] 
ZG 40 P05ITI0H 10, 8i? "FILENftME"! I INPUT F 

$;POKE 752,1:? " " 
re SO IF LEN(F$)<3 THEN POSITION 20,10:'' 

GOTO 40 

Wr 60 IF F${1,Z><>"B:" THEN FlS="D ; " 1 FIS { 

3]=F$:G0T0 80 
ItL 70 F1S=FS 

T* 80 IF CHR$t<l)="5" THEM 120 
r» 98 TRAP 430:0PEN 112, 4 , 8, Fl$ : TRAP 110 
NO lOB FOR X=l TO 16:GET tt2,A:HEXT X:LIHE 

=LIME»10;G0T0 108 
NH 110 CLOSE tl2!0PEH J12, », 8, FlS : GOTO 178 
VT 128 TRAP le8:0PEN HZ, 4, 0, Fl$ ; GOSUB 448 
JPOSITIOH 18,18:? "FILE ALREADY EXISTS 
! !":POKE 752,8 
ZU 130 POSITION 10, IZ:? "ERASE IT? "JtGOS 

UB 588:P0KE 752,1:? CHRSCA) 
«H 140 IF CHR$IA)="N" OR CHR$CAl="n" THEN 

CLOSE n2:G0T0 30 
HE 158 IF CHRSCA)<>"Y" and CHRSCA]<>"u" T 
u pu I -r a 

BH 168 CLOSE nZSOPEH tlZ,B,e,FlS 

IE 170 G05UB 450:P0SITI0H 10,1:? " IMiljBll.'B 

(SEQ; ";line:chksum=o 

CH 180 L1=3;F0R X=1 to 16!P0SITI0H 13»tH< 
10)+12)«CX>S) ,K + 2;P0KE 752,8;? "BYTE tt" 

;X;": "; :gosub 31B 

KH 150 IF EDIT AND L=0 THEM BYTEzBF CX) ; GO 
TO ZIO 

FY zoe byte=ual<nSj 

OZ ZBl HOD$=N$ 

Btl 210 POSITION Z2,X + Z;? BYTE;" " 

¥Z 220 BF<K)=BYTE:CHKSUH=CHK5UMtBYTE*X:IF 

CHKSUM>9935 THEN CHK5UM=CHK5UM-10000 
HS 230 NEXT X!CHK5UH=CHK5liHtLINE:IF CHKSU 

M>9995 THEN CHKSUM=CIIK5UM-10008 
IG 240 POSITION 12,Xt2:P0KE 75Z,0:? "CHEC 

K5UM: "; :li=4:gosub 318 

EN 258 IF EDIT AND L=8 THEN 278 

QM Z68 C=UAL(N$) 

SV 270 POSITION 2Z,K+Z:? C;" 

IL 280 IF C=CHK5UM THEN 300 

»I Z»0 G05UB 440;EOIT=1!CHKSUM=0;GOTO 188 

LH 300 FOR K = l TO 16 : PUT ttZ, BF CXI 1 NEXT X: 

LINE=LINE+lB!EDir=8:G0I0 170 
FM 310 L=0 
KZ 320 G05UB 500:IF CA=A5CC"Q") OR A=ASC C 

"q")) AND X=l AND NOT EDIT THEN 428 
PO 330 IF AORETRH and AOBACKSP AND CA<4 

8 OR A>57) THEM 328 
DK 331 IF AZRETRM AND NS="" THEN MSzMODS 
TB 335 IF A=RETRM AND L=8 AND X>1 THEN 35 

8 
M 340 IF (CA=RETRN AND NOT EDIT) OR A=B 

ACKSP) AND L=0 THEN 320 
BH 350 IF A = RETRN THEN POKE 752,1:? R 

ETURN 
CG 360 IF AOBACKSP THEN 400 
SO 370 IF L>1 THEN MI=N$ CI, L-IJ ; GOTO 390 
05 380 N«="" 

RE 390 ? CHRSCBACKSP) ; :L=L-1;G0T0 328 
88 400 L=Ltl;IF L>L1 then A=RCTRN:G0T0 35 

8 
MK 410 HSCL)=CHRS(AJ ;? CHRSCAl ; :GOTO 320 
KM 420 GRAPHICS 0:ENO 
YT 430 C05UB 440:P05ITIDN 10,10;? "MO 5UC 

H FILE!":F0R X=i TO 1000;MEXT X;CL05E 

n2;G0T0 30 
FB 440 POKE 710,48;S0UMD B, 100, 12 , 8 ! FOR X 

=1 TO 50;HEXT K;S0UND , , , ; RETURN 
MY 450 GRAPHICS 23;P0KE 16,112:P0KE 53774 

,H2;P0KE 559,0;P0KE 710,4 
XR 460 DL=PEEKC560) t2S6«PEEKC561)+4:P0KE 

DL-1,70:P0KE DLt2,6 
KM 476 FOR K=3 TO 39 STEP 2;P0KE DLtX,2;M 

EXT X:FOR X=4 TO 40 STEP 2:PDKE DL*X,0 

ZH 480 POKE DL*41,65;P0KE DL t42, PEEK C560) 

;POKE DLt43,PEEK[561) ;POKE 87,0 
AC 490 POSITION 2,0;? "analog Ml editor"; 

POKE 559,34;RETURN 
HZ 508 OPEN l:l,4,0,"K:";GET nl,A;CL05E Ml 
^,. : RETURN ^1 



OCTOBER A.N.A.L.O.CB. Computing 



SB 



REVIEWS: 



Reviewed by Matthew J.W. Ratcliff 



Happy 's Programs Astronauts is a trivia- 
quiz program for devoted followers of the 
NASA programs from the Mercury and 
Gemini missions through the Space Shuttle 
(mission 51-L). It is actually a rote drill, ask- 
ing the same types of questions over and over 
again. 

When booted, the main menu presents 
three selections: You may practice the Mer- 
cury/Gemini programs, the Apollo space 
shots or the Space Shuttle missions. By press- 
ing the appropriate number and Return, or 
by positioning a highlighter and pressing the 
fire button, the menu selection is made. 

The program's text-menu and question 
.screens can be navigated with either joystick 
or keyboard control. However, the user is 
constantly prompted to press a key to con- 

■ tinue. At this point a joystick fire button 
should be equivalent, but instead, the button 
is simply ignored. The joystick user-interlace 
is inconsistent and frustrating, and for this 
reason. Astronauts is best played entirely with 
keyboard control. 

If Space Shuttle is chosen from the main 
menu, for example, you are presented with 
the first question. The questions are select- 
ed at random from a database loaded from 
di.sk. A typical que.stion would be "Lousma. 
Fullerton were the crew members of:", fol- 
lowed by five choices of shuttle mission num- 
bers. The only variation on this theme is that 
in some cases, the mission is given and the 
crew members are presented multiple choice. 
When a question is answered correctly, a 
rocket blasts off for your entertainment. The 
drill problems continue until you press the 
"Q" key at the end of a round to quit. A fi- 
nal tally of questions asked, total correct and 
percentage score is presented. Pressing any 
key returns to the main menu. 

I found this to be a terribly boring game, 
not much more exciting than fla.sh cards. If 
you have a need to learn all the space mis- 
sions and the names of their crews, Happy's 

■ Programs Astronauts may prove useful. If 
trivia is your thing, it might come in handy 

■ as a party game. Beyond that, however, I real- 
ly cannot find anything interesting about this 
simple quiz program. . 



THE CREH OF 
GEMINI IG 
MI55I0N WAS: 



O. COOPER 

2. LOVELL & ALDRIN 

3. GLENN 

4. ARMSTRONG & SCOTT 

5. YOUNG & COLLINS 



PRESS ■ TO OUIT 
ANV OTHER KEY TO CONTINUE 



Happy's Programs Astronauts 

Bensley. Consulting 

P. O. Box 301 

217 W. Walnut St. 

Westfield, li 62474 

(217) 967-5465 

$19.95 



REVIEWS: 




Reviewed by Matth 

Swat and Panther are two 
games on one disk from 
Mastertronic at one affordable 
price. This game may be 
found where Commodore 64 
games arc sold, with the Commodore ver- 
sion on side one and the Atari version on the 
flip side. Inside the box is a disk, period; all 
. documentation is on the back of the package. 
The games are fairly simple and easy to learn, 
so the paperwork won't be missed. 

LA. Swat places you in the West Side of 
Los Angeles, where a gang has taken over. 
You lead a team of officers through the streets 
and shoot the hoodlums as they come at you. 
Hand grenades are lobbed at you and must 
be dodged. Occasionally, snipers take pot 
shots from the rooftops of the buildings that 
line the streets. Sometimes an overturned car 
must be worked around. 

In a gruesome animated effect, a police 
officer is clobbered over the head until dead 
by a hood who catches up with him. When- 
ever an officer is shot or hit by a grenade, 
he falls over backward, a well-done effect. 
One of the officers flanking him takes over 
the point, until no one is left. 

As you walk up the street, shoot along any 
point of the compass and at 45-degree angles 
to blow away the gang members coming at 
you from every direction. At the end of each 
street you are met by an onslaught of gang 
members running fast and furious and throw- 
ing plenty of grenades. After a short time, 
one will come running at you holding a hos- 
tage. Shoot the bad guy without harming the 
hostage— your ultimate goal is to save the 
ho.slages. 

At the end of each street comes the next 
level, which is faster and tougher to beat. But 
then, the battle against crime is never 
finished. 

Panther is a smooth-scrolling graphic ad- 
venture that is a cross between Blue Max and 
Choplifter. Since you are the "one and only 
poor sucker who can fly a Panther ground 
attack craft," you must fly diagonally across 
three different screens in order to save the city 
of Xenon. 
At various depots along the way, you will 



i 



i 



SCORE: eeeeee 



LEVEL: 
PAUSE 



■'■ i t nf i< rt»ff'" 



L.A. Swat and Panther 

Mastertronic 

711 West 17th St., Unit G9 

Costa Mesa, CA 92627 

(714) 833-8710 



see people waving at you. Land your Panther 
craft nearby and pick up as many stranded 
souls as possible. Don't dally, becau.se a 
swarm of attack craft will beset you in short 
order. The object of the game is to collect 
as many lost people of Xenon as possible and 
score as many kills of enemy aircraft as you 
can. 

The sound effects and graphics are quite 
good in Panther. There are some haunting ef- 
fects and music that are superb and make the 
game a lot more fun to play. The biggest 
problem with this game is the way the ene- 
iny "swarms" you. Often, all three attack 
craft will come at you at once, with no space 
on the screen between any of them. Your fir- 
ing speed at them is very sluggish, as it takes 
a while to judge the altitude of the attack craft 
by their shadows. You cannot outfly them; 



they stick with you until either you kill them 
or they kill you. 

Panther would be an excellent game if each 
ship you evaded simply flew off the screen 
and came back later. And if the ships flew 
in predictable formation and further apart. 
Panther would be playable. As it is. howev- 
er, it is simply a frustrating joystick exercise 
with some good graphics and musical effects. 

Both L.A. Swat and Panther are fairly well- 
done games with a few basic flaws. L.A. Swat 
is quite playable, but without much depth. It 
is a fairly challenging game that will hold 
your interest for a while. Panther could have 
been much more. I really wanted to like this 
game, with its wonderful music and detailed 
graphics, but it seriously lacks in the playa- 
bility department. Still, for the low price tag, 
these are fair rainy-day games. 



OCTOBER A.N.A.L.O.B. Computing 










^P 


'w 




^" u 


^x:- ■^- 


^^Kp^T 






^ 


£>^ 1 


ll^ 


'■'^^ 


1 


iiib^.MiS 




} 


-^^ 





■'i'vrff.iifji'^^lj 




^1 Wt\ z 



yslirkd, you wake lo ITnd youridl' half Inirkd boiicatli iIk' nuiuIn iif;! stniiis!!,' ;iiKi \a^{ idaiid. Lnokiiig. m 
\s'ani. your eyes .ua/e upuii tlie feiimiuh ol'Nour wrecked ship. As ym suiiyijk' i,o recall the [kini esciu>. li 
bruughl \ou io this, sfeimiigly ti'opicaJ pai'adise. your ha/.y iiiemi>!'> piiipviiiii.s only a \ ioleiu suu'ni ai hca a 
yuiu' atteuipts to keep your oiice-'!>ea\\orlh) \ehsel afloal. 
Cerium oiily Uiui you are bomewhere in the South t'aeil'iC; you climb (o \oui- fecJ, tiyiiw i.o yot a heari 
i.Mi your present location, Suddenl), your eyes lliU upon a wooden board lyinij on the beacii some \ar\is av^a\. An \ 
apiiroacJi it, you reall/,e [\ is some kind oC a sign, Brusiiing awa\- tlie sand irom the totting wood, \ou reveal the \soi 
"Wejconie to .Skull hslaiid,"' 

Your |)id.se quickens, as you lealke the nieanijig behind tliese woi'ds, in legend, many ailcmpted to sail to .Skull Isia 
tti discover tlie magic it pos,';esspd.. but no man ever returned Irqm liis, ad\'enture, 
The sviunds fli' the iunsle surround you. Destinv calks. Ym .set out to escaue .Skull I.sUu.id-or die irsith' 



stunu -cjr ttic 



B Y 



JOHN 



A T U T O 




The Game 

Skull Island is a text-adventure game that 
offers a lot more than just a little challenge. 
Time was taken in writing and developing this 
software so that it would have great detail and 
enough excitement for hours of enjoyment. 
Two years of programming, problem solving, 
testing and retesting were spent to create Skull 
Island and to ensure that all who played the 
game would find it as exciting as possible. 

On the outside. Skull Island may appear to 
be an ordinary text-adventure game, but what 
the inside holds sets it apart from all others. 
Incorporated into this game are musical tunes 
and sound effects, along with deliberate back- 
ground coloring to aid you in your adventure 
through the vast areas of Skull Island. This, 
along with an excitmg character set and com- 
pelling scenario, will show you why Skull Is- 
land is a game that will not soon be forgotten. 

Typing if in 

Listing 1 is the main game program. Sim- 
ply type it as it appears, making certain that 
all the lines are correct. (Use BASIC Editor 
n, found elsewhere in this issue, to check 



your work.) Because of the use of some con- 
trol characters, you should be very careful to 
enter them in correctly. One misplaced con- 
trol character will adversely affect the exe- 
cution of the program, and it may very well 
make the game unsolvable. Once you have 
completed typing Listing 1, save it to disk un- 
der the filename D:SKULL.l, but do not run 
it yet. 

Now type Listing 2. As you can see, List- 
ing 2 contains many DATA lines. These lines 
contain the heart of Skull Island. Again, if 
anything is mistyped, chances are you will 
not be able to run Skull Island successfully. 

After typing in Listing 2, save it to disk un- 
der the filename D:SKULL.2, then run it. 
It will prompt you to have the disk with 
SKULL. 1 ready. Once you have it in place, 
hit Return, and in a few moments it will cre- 
ate two files (D;STRING1 and D:STRING2). 
You can now run D:SKULL.l and play the 
game. 

In future play, you need not use 
D: SKULL. 2 again. Simply make sure that 
D : SKULL. 1, D:STRING1 and D:STRING2 
are all on the same disk. 

Game Play 

Skull Island is an adventure game in which 
you must enter commands to solve riddles 
and problems in order to win. The program 
recognizes a variety of words in a standard 
two-word verb-noun sentence. It also has an 
array of single-word commands for move- 
ment and other special tasks. I'll have more 
on that later. 

When entering-in a two-word command, 
such as GET WOOD or READ R\PER, you 
need to type only the first three letters of each 
word (i.e. GET WOO and REA PAP) for 
quicker input. Of course, spelling out the en- 



B&ti 4SAn aAt Morth^SMMf1mea&\ 



HotM can s€t& a ^^A-f Aaufder* 



tire word will not adversely affect the pro- 
gram in any way. One small hint here: If you 
need to use GO TO, type it as one word 
(GOTO). 

Along with the two-word commands are 
single-letter commands for special tasks. 
These are 'N'orth, 'S'outh, 'E'ast, 'West, 
'D'own, 'I'nventory, 'H'elp, 'Q'uit, 'X' Pres- 
ent Score, 'Y' Change to Atari Character Set 
and 'Z' Change to Skull Island Set. 

The object of the game is to wander around 
the island searching for a way to escape. You 
will find many objects scattered around the 
island that may prove useful in your escape. 
There is something unusual about Skull Is- 
land, and that is the great wall that surrounds 
it, making it almost impossible to leave. Yet 
legend has it that there are magical ways of 
lowering the wall in certain sections of the 
island. It is up to you to discover the secret. 

You can carry up to six objects at once; 
simply hitting "I" will give you an updated 
list of your inventory. Of course, you can drop 
any object at any time, but be careful; some 
things are worth hanging on to. 

The Help command is unique. In other ad- 
ventures, when you ask for help you are 
usually given a clue or hint as to what to do 
next. In Skull Island you are given a musical 
tune. It is up to you to decipher what this tune 
is trying to tell you. There is, however, an- 
other way of receiving help: Each time you 
enter a new section of the island, you are told 
which directions you can travel in (i.e. north, 
west. . .?). You will notice the "?" When you 
see this, the location you are in may or may 
not be special in some way. Again, it is up 
to you to discover the meaning behind each 
question mark. 

Also, whenever you see a new object or en- 
ter another section, be sure you examine 
everything. If you do not, you may find your- 
self hopelessly wandering throughout the 
island. 

Finally, Skull Island keeps track of your 
score and number of moves. You are allowed 
a maximum of 300 moves, and your highest 
possible score is 285. To view your score and 
number of turns at any time, enter the "X" 
command. If you are curious, the smallest 
number of moves possible to solve this ad- 
venture is 82. 

Good luck! 



Skuff Zs^ofMl X9i!C9X9}<9X9X» 



Y What's n&ott £ 
f UhaY^'s n&'xt ■ 



John Potato is currently studying computer 
science and communications at William 
Paterson College in Wayne, New Jersey. His 
current projects include a series of business 
programs for the Atari I30XE, an 8-bit Star 
Trek simulator, and somewhere down the 
line, the sequel to Skull Island, d 



OCTOBER A.N.A.L.O.Q. Computing 



You can see "j il 
ME; "nothing 



G5 POKE S80,l:P0KE 16,112:P0KE 53774,11 

2;C=l:D=6;E=C+C:ft=C-C:Hl=D-C 
MJ 1 DIM 0Q$C11,DLISC643 ,LSt43J,FSt4ZJ,RS 
(16),NStl2J,U$(12),DR$C24),DIR$(63,ITS 
I C16),VUSC63),NN$CieS) ,INU$(D3 , 11$ CDJ 
:LH 2 DIM SWS(12) ,yi$C3) ,M1$C3) ,I0$CD3 ,I1S 
CD) ,12$ CD) ,I3$(D),I4SeD) ,15$ CD) ,16$ CD) 
, 17$ CD), 18$ CD), 13$ CD), 110$ CD), IllS CD) 
MJ 3 DIM 112$ CD) ,113$ CD) ,114$ CD) ,115$ CD), 
116$ CD) ,117$ CD) ,118$ CD) ,113$ CD) ,128$ CD 
) ,121$ CD) ,122$ CD) ,199$ CD) ,1161$ CD) 
EA 4 DIM YN$C3) ,OK$Cie) ,MM$C19) ,C$C31) ,55 
$C65),51$C22) ,WS$C33) , PW$ C20) , PW1$ C20) 
UU 8 DIM I25$CD) IGOSUB 29808 : D0N=32009 : G5 
=2650 : NTH=2685 : DHT=26ie : NRM=2615 : HUH=2 
688 
VR 9 PRO=35O8:PK=21:OK=49:ILUE=250O:ILMO= 
2S50!0KV=54:0KN=2999:L0C=188:NLC=59:IT 
5=1699 :DCH=4444:TM=PK-C 
ZC 18 ePEN ttC,4,ft,"K:": P8KE 783,4:P0KE 75 
6,145:PeKE 752,C:P0KE 789,14;G0SUB 12! 
GOTO 13 
|JP 11 P05ITI0N C,19:? «£;">>>>>>>>>>>> 5k 
I ull Island <<<<<<<<<<<<"; :RETURN 
iTJ 12 POSITION C,19:? «E;"eSQ8GXe«eSG& 5k 

Ull Island SG&QSC&G&Q&G"; ^RETURN 
TW 13 Q=USRCflDRCDLI$) ,ADRCDLI$)+32) SPOKE 

54286, 192!P0KE 559,34:G0T0 15 
:RI> 14 FOR 1=15 TO A STEP -2.5:50UND fl,fiT, 
, 10,I;NEXT I:50UND A, A , A, A : RETURN 
mP 15 POP :POP !QK=A:P05ITI0N E,A:GOSUB L 
I OC;? ttE:? ttE;"You can go: '■; DR$: DIR=LE 
I NCDIR$) 

iNY 16 POSITION E,D!? ttE;" 
i F BG THEN DL=388 
RC 17 IF I99$="HKKHXX" THEN ? 

interesting." ; GOTO PRO 

TD 18 II$=I99$:G05UB ITS: GOTO PRO 

VL 28 POP :POP :AT=43:QH=ft:N$="":US="": JP 

= A:R$= FOR Q=A TO E:G05UB 14:NEKT Q: 

? HN$; :NCH=A:UCH=A:UT=A:TRAP TW 
jCZ 21 POKE 702,64:P0KE 694,A:IF PEEKC764) 
i =255 THEN G05UB 17ee8:G0T0 PK 
MC 22 UT=A:B=PEEKC764) :IF 8=60 THEN GBT8 

PK 
IHT 23 IF B=39 OR B = 154 THEN GOTO PK 
V5 25 GET «C,R:IF R=15S THEN 58 

26 IF CR<32 OR R=127 
AND R<16e OR R>252) 

TO PK 

27 IF R=126 AND JP=A THEN GOTO PK 

28 IF R=27 THEN R=32 

30 IF R=126 THEN 
JP=JP-C:GOTO PK 

31 GOSUB 35:JP=JP+C:? "f "; CHR$ CR) ; "H"; 
:RSCJP)=CHR$CR) 

32 GOTO PK 

35 IF JP=16 THEN GOTO PK 

36 RETURN 

49 ? ok$:tr=tr+c:return 

58 JP=A:R1 = LENCR$) :? "<■ ":IF R1 = A THEN 
U$=" "IGOTO ILUE 

51 TRAP 68:Q=U5RCL, ADRCR$) , ADRC" "),R1 
) :US=R$CC,Q-C) :NS=R$CQ+C,R1) :TRAP ILUE 
:U1$=U$CC,3) :TRAP ILN0:N1$=N$CC,3) 

52 TRAP 15:F0R CH=C TO LENCUUS) STEP 3 
:UCH=UCH+C:IF U1$=UU$ CCH, CH+E) THEN GO 
TO OKV 

53 NEXT CH:GOTO ILUE 

54 FOR CH=C TO LENCNN$) STEP 3:NCH=NCH 
+C:IF N1$=NN$CCH,CH+E) THEN GOTO OKN 

55 NEXT CH:GOTO ILNO 

57 FOR I=D TO IS : X1=U5R CADR CF$) , I) : NEX 
T I:RETURN 

59 XX=A:YY=A:DGR=A:FOR I=A TO 15:X1=U5 
RCADRCF$) ,1) ;NEXT I:GOTO IS 

60 GOSUB 75:R$=R$CC,C) :FOR CH=C TO 5:1 
F R$=SW$CCH,CH) THEN 70 

63 NEXT CH: GOSUB OK : IF R$="I" THEN 11$ 
=INUS:POSITION E,13:? tt2;"You are carr 
ying ";:GOSUB ITS-9:G0T0 PRO 

THEN 31900 

THEN QU=5:? "H":P0KE 756, 
145:G0SUB 12:G0T0 DON 

66 IF R$="X" THEN GOSUB 1888:G0T8 PRO 

67 IF R$ = "Y" THEN ? "IS":DK$: 
.":WN$="»»»«* Nhat's next B' 
224:G05UB 11:G0T0 PRO 

68 IF RS="Z" THEN ? "IS":OK$: 
.":MN$="*aHj Uhafs next Q' 
145:G05UB 12;G0T0 PRO 

69 IF R$=">:" THEN 15999 

70 FOR CH=C TO DIR;IF R$=DIR$ CCH, CH) T 
HEN GOSUB OK:GOSUB 2708:G8T0 NLC 

71 NEXT CH:? "You can't go in that dir 
ection.":G0T0 PRO 

75 IF LENCR$)=C THEN 98 

76 IF LENCR$)=E THEN U$=R$:GOTO ILUE 
89 V1$=R$CC,3) :FOR CH=C TO 33 STEP 3:1 
F U1$=WS$CCH,CH+E) THEN RETURN 



OR R=125 OR R>154 
AND R<>27 THEN GO 



■<-<-H <■"; :rScjp)="": 



64 IF R$="H" 

65 IF R$="Q" 



■♦>>>> O.K 
:POKE 755, 

•h+HH O.K 
:POKE 756, 



BT 81 NEXT CH:GOTO 92 

LE 90 FOR CH=C TO 12: IF RS=SMS CCH, CH) THE 

N RETURN 
ZM 91 NEXT CH:gS=RS:G0T0 ILUE 
AA 92 FOR CH=C TO LEN CVVS) STEP 3! IF Ul$= 

UUSCCH,CH+E) THEN ? 0K$ CC, D) ; R$; " what 

?"!POP :G0TO PRO 
LP 93 NEXT CH:FOR CH=C TO LEN CNN$] STEP 3 

:IF U1$=NN$CCH,CH+E) THEN ? OK$CC,D)J" 

Do What to the "j RS; "?" ! POP : GOTO PRO 
AC 94 NEXT CH;U$=R$:GOTO ILUE 
EU 100 POKE 718,48:P0KE 709,14:POKE 712, A 

:? l»E;"You are lying on the lagoon of" 

:? •JE;"a strange island. A sign says:" 
«Z 101 ? ttE;"'WELCOME TO SKULL I5LAND'":E 

L=2B8;WL=lieO!l99$=I0$:DR$="East/West" 

: DIR$="EW" : Hl=5 : RETURN 
YF lis I8$=I99$:RETURN 
RJ 150 PBKE 710,36:POKE 712,C:P0KE 709,14 

:? ttE;"You are walking along what is": 

? t*E;"known as "Death Beach ■ .":H1=7 
LT 160 I99$=Il$:EL=1450:WL=1400:DR$="East 

/West" : DIR$="EW" ! RETURN 
VW 165 I1$=I99S:RETURN 
NJ 200 POKE 718,18!P0KE 709,14:? «E;"Y0U' 

re lost deep within a large"!? «E;"den 

se rain forest .":NL=14S8;SL=2S8:H1=8 
YM 210 I99$ = I2$:EL = S58:WL=100:DR$="North/' 

South/East/West/ ?" : DIR$="NSEW" : IF LOC 

=200 THEN RETURN 
NY 211 GOTO 1468 
Y5 215 I2$=I99$!RETURN 
LU 250 POKE 7ie,210:P0KE 709,14:? ttEj"V0U 

'ue coMe across a field that":? ttE;"ha 

s dozens of PalM Tnees . ":NL=280!H1=E 
EI 260 I99S=I3$:DR$="North/ ?" : DIR$="N" : R 

ETURN 
ZI 265 I3$=I99$:RETURN 
XQ 300 POKE 710,48:P0KE 709,14:? ttE;"yoU 

are walking on a forbiddened": ? ttE;"an 

cient Burial Ground of past":Hl=7 
OB 301 ? ttE;"Mohandian Kings. ":SL=350:I99 

$=I4$:DR$="50Uth/' ?"!DIR$ = "S":BG=D:RET 

URN 
ZF 315 I4$=I99$:RETURN 
UO 350 POKE 710,8:P0KE 709, C:? tJE;"You ar 

e walking anidst hundreds":? t»E;"of er 

upting geysers.": NL=30B: EL=400 
CS 360 I99$=I5$:DR$="North/East":DIR$="NE 

":XX=RNDCC) :YY=TR:H1=C:RETURN 
ZV 365 I5$=I99S:RETURN 

IR 370 ? "A geyser erupted in your face." 

:GOTO DON 
EM 400 POKE 710,32:POKE 789,10:? ttE;"YOU' 

ve cohe across a clearing":? ttE)"which 
has dozens of giagantic" :I99$=I6$ 
VU 401 POKE 712, A:? ttE;"ToteM Poles. ":NL= 
450:EL=95O;WL=3S0:DR$="North/East/West 
?":DIR$="NEW":H1=E: RETURN 
ZS 415 I6$=I99$:RETURN 

YF 458 POKE 710,66:POKE 799,14:? ttE;"You' 
re walking aside a volcano":? ttE;"in a 
dried-up laua f isure .": NL=SOO: 5L=40O 
SQ 460 I99$=I7$:EL=900:DR$="North/5OUth/E 
ast/ ?":DIR$="N5E":XX=RNDCC) :YY=TR:H1= 
C:RETURN 
AI 465 I7$=I99$:RETURN 
PP 470 ? "A lava-aualanche has buried you 

.":GOTO DON 
AA 500 POKE 710,128:P0KE 709,14:? ttE;"A f 

riendly native welco«es":? ttE;"you int 

his village. ":NL=SS0:5L=450:H1=E 
EO 510 I99$=I8$:DR$="North/South/ ?":DIR$ 

="NS";RETURN 
AF 515 I8$=I99S:RETURN 
YY 550 POKE 710,i48:P0KE 709,14:? «2j"Y0U 

'ue cone across":? ttE;"a large grassy 

clearing.":NL=6OO:SL=500:EL=65O:Hl=E 
JQ 560 I99$=I9$:WL=200:DR$="North/SOUth/E 

ast/West":DIR$="NSEW": RETURN 
AU 565 I9$=I99$:RETURN 

DU 600 IF NOT TOR THEN LOC=13S0 : GOTO LOC 
LR 601 GOTO 1500 
KG 610 NL=1500:SL=55O:I99$=IlO$:DR$="Nort 

h/South/ ?":DIR$="N5":XX=RNDCC) :YY=TR: 

H1=C: RETURN 
50 615 I18$=I99S:RETURN 
LM 628 ? "The lion Made you his next Meal 

.":goto don 

YM 650 POKE 710,38:P0KE 709,14:? «E;"QUic 
k sand traps surround you":? aE;"as yo 
u step onto this shaky land." 

FC 660 I99S=I11$:5L=7O0: WL=550:DRS="5outh 
/West":DIR$="5M":XX=RNDCC) :YY=TR:H1=C! 
RETURN 

IF 665 I11$=I99$:RETURN 

KR 670 ? "You've sunk into the quicksand. 

":GOTO DON 
NC 700 POKE 712,C:P0KE 718,96:P0KE 709,14 
:? «E;"You've coMe across what seeMS": 



I 



O 

o 

2 



o 

«n 



OCTOBER A.N.A.L.O.C3. Compucing 



ei 






o 









UH 
QE 



SE 



Vl> 

ua 



NL 



«E;"to be a deserted village." 

I 716 I99S=I12S;HL = 650;SL=750:DRS = "Horth 
/South/ ?"!DIR$="NS";H1=3; RETURN 
715 I12S=I99$! RETURN 
758 POKE 710,36;POKE 712,32:P0KE 709,1 

J4!? «E;"fts you walk apon this sand":? 

|»E;"dune, a hasty wind thrashes up." 

1760 I99$=I13$:NL=700:5L=1000:EL=800:WL 
i850:DRS="Horth/South/East/West";DIRS= 

I "HSEW"!H1=E; RETURN 
765 I13S=I99$:RETURN 

see POKE 710,34:POKE 712,36:P0KE 769,1 
4;? »E;"You've coMe upon an area fille 
d":? ttE;"with banboo plants. A sign" 
801 ? «E;"here says: 'BaMboo burns wel 

1 1" .":i99S=Il'lS:WL=750:DR$="West/ ?":DI 

Ir$="N":H1=E:RETURN 

TS 815 I14$=I99$;RETURN 

UU 850 POKE 712,C;P0KE 710,4:P0KE 709,14: 

? «E;"You are walking along a large":? 
tJE;"fisure Made of sharp rocks." 
UB 860 H1=E:I99S=I15S:5L=906:EL=750:DRS=" 

South/East" :DIRS="5E": RETURN 
UJ 865 I15S=I99S:RETURN 

|9e0 POKE 7ie,20:P0KE 709, C:? »E;"ft fou 

1 Stench is in the air as you":? tJE;"c 
loMe across a dingy swanp area.":Hl=7 
|910 POKE 712,fl:I995=I16$:NL=850:SL=956 

;EL=1606:WL = 456:DR$ = "Nor-th/5outh/East/ 

West/ ?":DIRS="NSEW":RETURN 

915 I16$=I99$:RETURN 

956 POKE 710,14:P0KE 709, C:? «E;"Y0U'r 

e at the southern edge of":? >JEj"the i 

sland. There's a strange" : H1=D 

951 ? »E;"feeling in the air.":I995=Il 

6I$:NL=906:HL=4ee : DRS="North/West/ ?"; 

DIRS="NW":BG=«: RETURN 

965 116I$=I99S:RETURN 

1000 POKE 712,C:P0KE 710,18:P0KE 709,1 

4;? «E;"ftniMals are all around you":? 

«E;"as you enter a savage jungle." 

1010 I99$=I17S:NL=758:SL=1056:WL=9OO:D 

R$="North/5outh/West":DIRS="N5N":Hl=7: 

RETURN 

1015 1175=199$: RETURN 

1050 POKE 710,245:POKE 709,14:? «E;"Yo 
|u're at the only section of":? ttE;"the 

island where you can Hake":Hl=E 
liesi ? l»E;"S0Hething of it .";NL=:1000 : 1 

99$=Il8$:DRS="North/ ?":DIRS="N":RETUR 

N 
11065 I18S=I99S: RETURN 
FH 1100 POKE 710,128:P0KE 712,128:P0KE 78 

9,14:? tlE)"You're now swiMMing in the" 
;? ttE;"lagoon. Havin' fun ?":EL=100 
FJ 1110 I99S=I255:DR$="East/ ?":DIRS="E": 

DGR = 5 : YY = RND tC3 : KX = TR ; H1=C : RETURN 
MU 1115 ? "It's gone forever now!":I99S=" 

XKKXXK":G05UB 50OO:POKE 709 , 14 : RETURN 
JY 1120 ? "You just drowned. ":GOTO DON 
Ctf 1156 POKE 716,128;P0KE 712,148;P0KE 70 

9,14:? ttE;"You are now in your boat.": 

? 8E;"It's been a tiring day.":DGR=5 

VC 1150 I99S=I25$:DRS = "?":DIR$= YY = RND 

CO) :KK=TR:H1=4:RETURN 
CM 1170 ? "You failed to coMplete your jo 

urney.":GOTO DOM 
IZ 1280 ? ttEj"You ape on top of a":? ttE;" 

very tall Pain Tree." 
OA 1210 DL=250:I99S=I195;DGR=5:DRS="Down" 

:DIRS="D":H1=9: RETURN 
RR 1215 I19$=I99$:RETURN 

HF 1250 ? ttEj"You are on top of a":? «E;" 
strange platforn." : DL=950:I99S=I25S :DG 
R=5 : DRS="Down" : DIR5="D" : H1=D : RETURN 

PC 1265 GOSUB 5OO0:GO5UB 18000:? "It's be 
en zapped to another location!" 

• 1268 FOR CH = C TO D:IF 199$ CCH , CH3 ="K" 
THEN I99$tCH,CHJ=CHR$CNCH3 :G05UB LOC+1 
5 : I99$=I25$ : L0C=1250 : RETURN 
1269 NEKT CH:G05UB 18000:G0T0 1268 
1360 ? ttE;"You are inside a native's": 

t»E;"hut. SoMeone's here." 
1316 EL=50O:l9 9$=l2eS:DRS="East":DIR$= 
"E":H1=E:RETURN 
PC 1315 I2e$=I99$:RETURN 

SQ 1350 POKE 710,C:POKE 709, E:? «E;"It'S 
to dark to see":? »E;"anything in here 
. " : 5L=550 : I99$::I25$ : DGR=5 

1350 DR$="5outh ... and hurry !": DIR$=" 

5";YY=RNDCC) : KX=TR : H1=C : RETURN 

1365 GOTO Ills 

1370 ? "You fell and broke your neck." 

IGOTO DON 

1400 POKE 710,128:POKE 712,128:? ttE;"Y 

ou are now swinning in":? BEj"the ocea 

n. Sharks are all":? »E;"around you." 

1410 DGR=5:I99S=I255:EL=150:DR$="East/ 

(.11 ?";dir$ = "e";yy = rndtc> : kk=tr : h1=c : retu 
■■rn 



KH 

ov 



UC 



RX 
OH 



QR 



LR 



1415 
I 1420 
ks." 
1450 
1460 
"SOUt 
1465 
1500 
re wa 
Cave 
1510 
0C=15 
1511 
1515 
1690 
g at 
1691 
1699 
HEN N 
1708 
1701 
ITS 
IN8 
I 1710 
K" TH 
EAD I 
1720 
1730 
: GO 
I 1740 
1750 
1751 
1776 
1777 
1800 

';TR 

I 2099 
2100 
2101 
2102 
2103 

I 2104 

I 2105 
2106 
2107 
2108 

I 2189 
2110 

I 2111 
2112 
2113 
2114 
2115 
2116 
2117 
2118 
2119 
2120 
2121 
2122 
2123 
2124 
2125 
2126 
2127 
2128 
2129 
2500 
$Ctt5C 
2501 
OTO P 
2550 
$CftSC 
2551 
s.";g 
2600 

an." 
2605 

12616 
:G0T0 

I 2615 

e.":G 

2650 
2700 
2701 
2702 
2703 
2704 
2705 
2999 
GOTO 
3000 
3001 
3002 
056,4 
,4185 
3003 
3100 
SHIP 



GOTO 1115 

? "You were just attacked by shar 

GOTO DON 

GOTO 200 

5L=20O:WL=150:H1=8:I99$=I21S:DR$= 

h/WeSt/ ?":DIR$="5W":RETURN 

I21$=I99$;RETURN 

POKE 710,C:POKE 709,14:? «E;"YOU' 

Iking dangerously":? J»E;"thru the 

s of Death. ":SL=600:I99$=I22$ 

Hl=C:DRS="South/ ?":DIR$="5":IF L 

66 THEM RETURN 

GOTO 610 

I22$=I99$: RETURN 

IF II$="XXXKXK" THEN ? aE;"nothin 

all .":RETURN 

OX=C 

FOR IC=C TO D:IF 11$ CIC, IC3 ="X" T 

EXT IC 

IF NOT QX THEN IN8=A 

RESTORE 2099+fl5CtII$CIC,IC3) :REttD 

? «E;"a ";IT$;".":IF not qx THEN 

IN8+C;G0T0 1776 

FOR CH=IC+C TO D:IF II$CCH,CH)<>" 

EN RESTORE 2099 + (iSC tll$ tCH, CH) ) : R 

T$:G0T0 1730 

NEXT CH: RETURN 

IF QX THEN ? «E," fl ";IT$;" 

TO 1750 

? aE," fl ";IT$;"." 

IF NOT QX THEN IN8=IN8+C 

GOTO 1720 

IF IC=6 THEM RETURN 

GOTO 1710 

? "You've scored ";SC;" points in 

turns":RETURN 
DATA Coconut Shell 
DflTO Piece of Paper 
DATA Piece of Wood 
DftTfl Coconut 
DftTfl Black Pearl 
DflTft Dianond 
DATA Sharp Rock 
DATA Crystal Skull 
DATA Rusty Saw 
DATA Piece of Banboo 
DATA Bag 

DATA Bunch of Nails 
DATA Machete 
DATA Piece of Bark 
DATA Torch 
DATA Giant Volcano 
DATA Tall PalM Tree 
DATA lot Of Trees 
DATA strange PlatforM 
DATA Burial PlatforM 
DATA SyMbolic Pole 
DATA Native Hut 
DATA Native Girl 
DATA Flat Boulder 
DATA Hungry Lion 
DATA Bell 
DATA Native 
DATA Stalk Of BaMbOO 
DATA Large Stone 
DATA SMall Fire 
DATA Hole 

FOR CH=C TO LEN tUS> :USCCH,CH)=CHR 
tU${CH,CH33+128) :NEXT CH 
? "I can't "■;U$;"' soMething.":G 
RO 

FOR CH=C TO LENCN$} :M$CCH,CH)=CHR 
tN$tCH,CH33+1283 :NEXT CH 
? "I don't know what a ■";NS;"' i 
OTO PRO 

? "I don't understand what you Me 
GOTO PRO 

? "I don't see it here.":GOTO PRO 
? "You can't, you don't have it!" 

PRO 
"You can't, there's no rooM her 
OTO PRO 

s iMpossible.' 
THEN LOC=NL 
THEN LOC=SL 
THEN LOC=EL 
THEN LOC=WL 
THEN LOC=DL 



:goto pro 



? "That's 

IF R$="N" 

IF RS="S" 

IF RS="E" 

IF R$="W" 

IF R$="D" 

RETURN 

NCH=NCH-C:IF VCH=TW+C THEM UCH=C: 

3003 

IF UCH=13 THEN VCH=12 

IF UCH>12 THEN UCH=UCH-C 

ON VCH GOTO 3980,3980,4024,4024,4 

075,4100,4105,4109,4109,4150,4175 

,4200,4225,4225,4250,4275,4300 

ON VCH GOTO 4325 

IF NCH=E OR NCH=13 OR NCH=11 THEN 

=SHIP-5 



OCTOBER A.N.A.L.O.C3. CompuCing 



KO 

ON 



LP, 

I 

KV 
OP 

I 

uc 

UN 



OA 
II 
PS 

KP 



3101 IN7=IN7-C: RETURN 

333J FOR 1=50 TO C STEP -C:SOUND C,50- 

I,10,10:NEXT I 

3334 FOR 1=15 TO A STEP -0.5;SOUND C,7 

5+I,8,I;NEXT IlRETURN 

3400 FOR I=C TO 4 ; K=ftSC CSSS CI, I) ) ; SOUN 
D E,K,10,1S;F0R CH=C TO 10 ; NEKT CH:SOU 
ND E,fl,ft,ft;FOR CH=15 TO STEP -0.75 

3401 POKE 712,CH:S0UND E, K, 10, CH : NEKT 
CH:NEXT I:RETURN 

3450 FOR CH=C TO 22 STEP E ; X=flSC CS15 CC 
H,CH3):50UND E, X, 10, 8 i SOUND 3,X/E,10,D 
IFOR I=C TO flSC(Sl5tCH+C,CH+C3)»E 
3455 NEKT IlSOUND E, CI, fl, fl : NEKT CH;50UN 
D 3,fl,fl,fl;RETURN 

3475 FOR CH=5 TO 10 : X=ASC (SSS CCH, CH) 3 ! 
SOUND E,K,10,6; SOUND 3, K/E, 10 , 8 : FOR 1= 
C TO CHINEXT I;SOUND 3,fl,fl,ft:NEKT CH 
3478 SOUND E, ft , ft , fl ; RETURN 

3500 IF TOR AND TR>T0R+3 THEN TOR=fl:? 
"Your torch just went out."!GOSUB 3550 
;GOTO 3506 

3501 IF NOT FIRE THEN 3506 

3502 IF TR<FIRE+4 THEN 3505 

3503 FIRE=fl:? "The fire went out.":FOR 
CH=2 TO D!IF I95CCH,CH)="+" THEN I9St 

CH,CHJ="X":GOTO 3505 

3504 NEXT CH 

3505 IF L0C=550 THEN GOTO NLC 

3506 IF TR>15 AND NOT FOOD THEN ? OKS 
(C,D))"You have starved to death. ":GOT 
DON 

3507 IF TR=30O THEN ? 0K$ CC, D3 ; "You ha 
ve taken to Many turns. ":GOTO DON 

3510 IF NOT YY OR YY=IHTCYY) THEN 352 


3511 IF TR=XX THEN 3515 

3512 IF YY<0.8 THEN GOTO LOC+TM 

3513 YY=RNDCC) IGOTO TW 
3515 TR=TR+C:GOTO TW 

3520 IF NOT KK THEN GOTO TW 

3525 IF TR=YY THEN GOTO TH 

3530 IF KK<0.13 THEN GOTO LOC+TM 

3535 IF KK<0.5 AND NOT SKU THEN GOTO 

LOC+TW 

3540 KX=RNDCC) :GOTO TW 

3550 IF LOC=600 OR LOC=150a THEN L0C=1 
350:G0T0 NLC 

3551 RETURN 

3900 IF NCH>14 THEN GOTO G5 
3950 IF IN7=D THEN ? "Vou are carrying 
to MUCh.":G0T0 PRO 

3975 FOR CH=C TO D ; IF 199$ CCH, CH) =CHR$ 
(NCH) THEN G05UB OK : 199$ CCH, CH) ="X" : GO 
TO 4000 

3976 NEXT CH:FOR CH=C TO D;IF INUSCCH, 
CH)=CHR$CNCH) THEN ? "YOU already have 

that iteH.":GOTO PRO 

3977 NEKT CHrGOTO NTH 
4000 IF NCHOll THEN 4006 

4004 FOR HC = C TO D ; IF INUS CHC , HO ="L." 
THEN NflI=C:SHIP=SHIP+5:G0TO 4006 

4005 NEXT HC;? "Not Without soMething 

to put the« in.":I99$CCH,CH)= GOTO 

PRO 

4006 IN7=IN7+C;SC=5C+10:IF HCH=E OR NC 
H=13 THEN SHIP=SHIP+S 

4012 IF NCH=4 OR NCH=5 OR NCH=7 THEN 5 
C=SC+10 

4013 IF NCH=7 THEN 5KU=5 

4015 G05UB L0C+15!F0R CH=C TO DilF INU 
$CCH,CH)="X" THEN INV$ CCH , CH) =CHR$ CNCH 
] :GOTO 4021 

4020 NEXT CH 

4021 GOSUB 57:P0SITI0N E,13:? «2;"V0U 
are carrying "; :II$=INU$;G0SUB ITS-9:Q 
H=0;GOTO 16 

4022 GOTO PRO 

4024 IF IN8=D THEN GOTO NRM 

4025 IF NCH>14 THEN GOTO G5 

4026 FOR CH=C TO D ; IF INU$ CCH, CH) =CHRS 
(NCH) THEN 4028 

4027 NEXT CH:GOTO DHT 

4028 IF CNCH = 5 AND L0CO1300) OR CNCH= 
4 AND LOCO70O) OR CNCH = 7 AND LOCOlOS 
0) THEN 5C=5C-TW:IN7=IN7-C:G0T0 4030 

4029 GOTO 4031 

4030 GOSUB 3333;? "It Shattered into a 
Million pieces!";GOSUB DCHiGOTO 4021 

4031 IF NCH=4 OR NCH=5 OR NCH=7 THEN G 
OSUB OKIGOSUB 4500:GOTO 4038 

4032 IF L0C=550 AND NCH=D THEN GOSUB 4 
400 

4033 IF NCH = 3 AND LOCO1250 THEN 4045 

4034 IF NCH=10 AND NAI AND IN8>4 THEN 
GOTO NRM 

4035 IF NCH=10 AND NAI THEN SC=5C-TW:S 
HIP=SHIP-5:G0T0 4039 



" 



D:IF INUSCCH,CH)="h" 
t-*++-»-»*->*-»*^-»+It read 



4036 GOSUB 3100:G0SUB OK:FOR CH=C TO D 
IF I99$CCH,CH)="X" THEN 199$ CCH, CH) =C 
, HR$ (NCH) :GOSUB L0C + 15:G0T0 4038 
KU 4037 NEXT CH 
TD 4038 SC=SC-10:GOSUB DCH:GOSUB 4053!G0T 

4021 
PJ 4039 GOSUB 4051 ; FOR CH=C TO D : IF INU$C 

CH,CH)="W" THEN INUS CCH, CH) ="X" 
NO 4040 IF INy$CCH,CH)= THEN INU$CCH,C 

H) ="X" 
QB 4041 NEKT CHiFOR CH=C TO D:IF I99$CCH, 

CH)="K" THEN I99$CCH,CH)="k.":G0SUB LOC 

H5:G0TO 4043 
KE 4042 NEXT CH 
KT 4043 FOR CH=C TO D ; IF 199$ CCH, CH) ="X" 

THEN I99$CCH,CH)= IN7 = IN7-E ! GOSUB L 

0C+15:G0SUB OKIGOTO 4021 
KM 4044 NEXT CH 

BN 4045 IF IN8>4 THEN GOTO NRM 
^4046 GOSUB OKlGOSUB 3333:F0R CH=C TO D 
■ !IF I99$CCH,CH)="X" THEN 199$ CCH, CH) =" 
■I «":GOTO 4048 
Wl 4047 NEXT CH 
EZ 4048 FOR CH=C TO D : IF 199$ CCH, CH) ="K" 

THEN I99$CCH,CH)="H":G0SUB L0C+15;IN8= 

IN8+EiG0T0 4050 
LG 4049 NEKT CH 

IM 4050 GOSUB DCH:IN7=IN7-C:G0T0 4021 
LH 4051 IF LOC=1250 THEN ? "You can't dro 

p the bag of nails here.":GOTO PRO 

4052 RETURN 

4053 IF NCH=14 AND TOR THEN ? "The tor 
Ch went OUt.":T0R=A:IF LOC=1500 OR LOC 
=600 THEN LOC=1350:GOTO NLC 

4054 RETURN 
4056 IF NCH=C THEN 4060 

DK 4057 IF NCH018 THEN GOTO HUH 

4058 IF L0CO400 THEN GOTO NTH 

4059 GOSUB OK:? "It says: Girls fancy 
precious stones":? ,"<^Men prefer dark 

I beads. ":GOTO PRO 

4060 FOR CH=C TO 
THEM GOSUB OK:? 
s:":GOTO 4062 

4061 NEKT CHiGOTO DHT 
I 4062 ? "To lower the weir around this" 

? "atoll, leave a glister on a stone. 
:GOTO PRO 
14075 IF NCH<15 OR NCH>17 THEN ? "You C 
an't cliMb that!":GOTO PRO 

4076 ON NCH-14 GOTO 4077,4080,4090 

4077 IF LOCO450 THEN GOTO NTH 
I 4078 L0C=300:GGSUB OK:? "You slid over 

the top to a new place. ":GOTO NLC 
J 4080 IF LOC=20e OR L0C = 1459 THEN ? "Yo 
u can't CliMb these trees. ":GOTO PRO 
4081 IF L0CO250 THEN GOTO NTH 
UU 4082 GOSUB OK ; L0C=1200 : GOTO NLC 
3IT 4090 IF LOCO300 AND LOCO950 THEN GOT 
I NTH 

4091 GOSUB OK:IF L0C=3ee THEN BG=5 

4092 L0C=1250:G0T0 NLC 
I 4100 IF NCH=20 AND L0C = 130B THEN ? "Sh 

's not into that!Q":GOTO PRO 
14101 IF NCH<>3 THEN ? "Vou can't eat t 

hat !";GOTO PRO 
I 4102 FOR CH = C TO D : IF INy$ CCH, CH) =CHR$ 
CNCH) THEN GOSUB OK:? "Thanks, but it 
tasted kind of funny. ":G0TO 4104 

4103 NEXT CH:GDTO DHT 

4104 IN7=IN7-C:5C=5C-5;F00D=5;G0SUB DC 
H:GOT0 4021 

4105 IF NCH029 THEN GOTO HUH 

4106 IF FOOD THEN ? "You already drank 
the Milk.":GOTO PRO 

4107 FOR CH=C TO D:IF INUS CCH, CH) ="»" 
THEN GOSUB OK;? "Thank you, it was del 
iCiOUS.":F00D=5;G0T0 PRO 

4108 NEKT CH;GOTO DHT 

4109 IF NCH>29 AND CNCH031 AND NCH03 
2) THEN GOTO HUH 

4110 GOSUB 15000:IF NCH=16 AND CL0C=20 
OR LOC=1450) THEN 4119 

4111 IF NCH=16 AND LOC=250 THEN 4130 

4112 IF NCH=17 AND CLOC=300 OR LOC=950 
) THEN 4130 

1 4113 IF NCH>15 THEN NCH=NCH+E 

4114 FOR CH=C TO D:IF INW$ CCH, CH) =CHR$ 
CNCH) OR I99$CCH,CH)=CHR$CNCH) THEN 41 
18 

4115 NEXT CH;GOTO NTH 

4116 GOSUB OK;IF NCH>16 THEN 4118 

4117 ON NCH+C GOTO 4120,4122,4121,4123 
,4124,4124,4125,4124,4121,4119,4146,41 

I 42,4126,4121,4128,4130 

14118 ON NCH-19 GOTO 4122,4123,4131,413 

I 3,4132,4119,4119,4119,4119,4140,4134 



I 



e 

I 



OCTOBER A.N.A.L.O.Q. Computing 



HI 

O 

z 



m 
S 

IS! 



« 



I 



AZ 

XF 

CH 

EH 

ZV 

TI 

NN 
RF 

LH 
RD 
JR 

PI 

BM 

JG 

RU 

XY 
UD 

HC 

UK 

DZ 
CZ 
UZ 
AU 
NE 

GK 

IE 

TL 
KC 
ZU 

RL 



KS 
AB 



UJ 
FP 



GM 
TM 

ZO 
VO 
MV 
SM 



KI 
XV 



BJ 

HL 



AX 
PZ 

PZ 

LN 
HV 

GI 

ET 



4119 ? "There's nothing interesting ab 

out it."; GOTO PRO 

4120 IF NOT FOOD THEM ? "It's full Of 
coconut «ilk.":GOTO PRO 

4121 ? "Looks like it could be useful, 
":GOTO PRO 

4122 ? "It has soMething written on it 
.":GOTO PRO 

4123 ? "5ounds like SOKiething's inside 
.":GOTO PRO 

4124 ? "It's very fragile .":GOTO PRO 

4125 ? "It looks like flint. ":GOTO PRO 

4126 IF 5HA THEN ? "It seeMS quite sha 
rp.":GaTO PRO 

4127 ? "5eens kind of dull.":GOTO PRO 

4128 IF TOR THEM ?"It's burning brigh 
tly.":GOTO PRO 

4129 ? "It isn't burning. ":GOTO PRO 

4130 ? "It looks CliHable.":GOTO PRO 

4131 ? "She'd like a sign of affection 
.";GOTO PRO 

4132 ? "It seeHS quite ferocious !":G0 
TO PRO 

4133 ? "It has ashes around it.":GOTO 

PRO 

4134 FOR CH=C TO D:IF I99S tCH, CHJ ="S" 
THEN ? "There's a Crystal Skull in the 
ne.";GOTO PRO 

4135 NEXT CH;? "It's quite eHpty.";GOT 
PRO 

It seens quite hot.":GOTO PRO 
GOTO PR 



"They could be useful. 
"It's quite sea-worthy. 



'IGOTO P 



'It's full of nails 



4140 

4142 



4145 

RO 

4146 IF MAI THEM 
.";GOTO PRO 

4147 FOR CH=C TO C : GOTO 4135 

4150 IF NCH019 THEN GOTO HUH 

4151 IF LOCO50O THEN GOTO NTH 

4152 L0C=13e0;G0SUB OK:G0T0 NLC 

4175 IF NCHOTU and NCH033 THEN GOTO 
G5 

4176 G05UB 120eO:IF L0CO1300 THEN ? " 
I don't see her around here.":GOTO PRO 

4177 IF NOT KI5 THEN ? "She'd like a 
gift first. ":GOTO PRO 

4178 IF FC THEM 4184 

4179 IF IN8=D THEM GOTO NRM 

4180 GOSUB OK:GOSUB 3400:P0KE 709,14:? 
"That was quite pleasing. She":? "tha 

nks you by droping a saw."!FC=5 

4181 FOR CH=E TO D : IF 199$ CCH, CHJ ="X" 
THEN I99SCCH,CH)="i":G05UB L0C-H5:SC = S 
C+1S:G0T0 4021 

4182 NEXT CH 

4184 ? "Being the savage that she is, 
she":? "stabs you for being too kinky 
J";GOTO DON 

4185 IF NCH014 THEM ? "YOU Can't ligh 

t that on fire !":GOTO PRO 

4186 IF NOT FIRE OR L0CO550 THEN ? " 

I don't see a fire around here.":GOT0 

PRO 

4187 FOR CH=C TO D : IF INUS CCH , CH) ="_" 
THEN 4189 

4188 NEXT CH:GOTO DHT 

4189 GOSUB 0K:SC=SC+15:? "It's now lit 
, but not for long.":TOR=TR:GOTO PRO 

4200 IF MCH023 THEM GOTO HUH 

4201 IF L0CO700 THEN GOTO NTH 
4282 IF IN8=D THEN 4179 

4203 GOSUB OK:GOSUB 4212:F0R CH=E TO D 
;IF 199$ tCH,CH3="'-" THEM GOTO PRO 

4204 NEXT CH:? "Suddenly, a native app 
ears";;FOR CH=E TO D ; IF I99$CCH,CHJ ="X 
" THEN 199$ CCH,CH3 ='"•": GOTO 4206 

4205 NEXT CH 

4205 GOSUB L0C+15:F0R CH=E TO D:IF 112 

$tCH,CH3="H" THEN 4210 

4207 NEXT CH;? " . " ; SC=SC+5 : GOTO 4021 

4210 ? " and takes":? "the pearl. He s 
ays 'Dig a hole where";? "the ground c 
an Heasure tiHe . "':5C=SC+25 

4211 199$ tCH,CH)="X":GOSUB LOC+15:G0TO 
4021 

4212 FOR OX=C TO 3;F0R 1=15 TO A STEP 
-O.S:SOUND C,75,10,I:50UND A,75,10,I:N 
EXT I:NEXT aX:RETURN 

4225 IF NCH025 AND NCH016 THEN GOTO 
HUH 

4226 IF NCH=25 THEM 4235 

4227 IF L0C=25O THEN ? "YOU Can't do t 
hat to this tree.";GOTO PRO 

4228 IF L0CO200 AND L0CO1450 THEM ? 
"I don't see any trees here.";GOTO PRO 

4229 IF CHOP THEM ? "YOU already did." 
:GOTO PRO 



4238 FOR CH=C TO D ; IF INU$ CCH, CH) ="i" 
THEN GOSUB OK : SC=SC+15 ; CH0P=5 ; GOTO 423 
2 

4231 NEXT CH;? "You can't do that e«pt 
y handed. ":GOTO PRO 

4232 IF LOC=2O0 THEN 12$ CC, C) ="~" ; 121$ 
tC,C)="X":I99$=I2$ 

4233 IF LOC=1450 THEM 121$ CC, C) ="~" : 12 
$CC,C)="X":I99$=I21$ 

4234 GOSUB 10000;? "As this tree falls 
, so do all the";? "rest in the dark f 
orest.":GOTO 4021 

4235 IF LOCO800 THEN ? "I don't see a 
Stalk here.":GOTO PRO 

4238 IF CTB THEN ? "YOU already did.": 
GOTO PRO 

4237 FOR CH=C TO D;IF INy$CCH,CH)= 

THEN 4239 

4238 GOTO 4231 

4239 IF NOT SHA THEM ? "The Machete's 
not sharp enough . ":GOTO pro 

4240 CTB=5:G0SUB OK : SC=:SC + 5 : 114$ tC, C) = 
" ,";I99$ = I14S;G0T0 4021 

4250 IF MCH028 THEM GOTO HUH 

4251 IF DGR THEN ? "You can't dig a ho 
le here.":GOTO PRO 

4252 IF IN8=D OR (LOC=750 AND IMS>4) T 
HEM GOTO NRM 

4253 FOR CH=C TO D:IF INy$ tCH , CH) ="♦" 
THEN 4255 

4254 NEXT CH ; ? "YOU don't have anythin 
I g to dig with.";GOTO PRO 

4255 GOSUB 4261;F0R CH=C TO D:IF I99SC 
CH,CH)="<-" THEM ? "There's already one 

! here.":GOTO PRO 

4256 NEXT CH:GOSUB OK;FOR CH=C TO D;IF 
I99$tCH,CH)="X" THEN 199$ CCH , CH) ="<•" ; 

GOSUB L0C+15:G0T0 4258 
; 4257 NEXT CH 

4258 IF LOCO750 THEN GOTO 4021 

4259 ? "A Crystal Skull is inside the 
hole!":SC=SC+S;FOR CH=CH+C TO D:IF 199 

! $CCH,CH) <>"X" THEN NEXT CH 

14260 I99$CCH,CH)="S";SC=SC+5:G0SUB LOC 

I +15:G0T0 4021 

; 4261 IF NOT FOOD THEN ? "Mot until yo 

u do soMething first. ":GOTO PRO 

4262 RETURN 
■ 4275 IF MCH012 THEN GOTO HUH 
14276 IF L0CO850 THEN ? "YOU can't do 

that here.";GOTO PRO 

4277 FOR CH=C TO D:IF INV$CCH,CH)= 

THEN GOSUB 0K:SHA=5:? "Your Machete is 

now sharp. ";GOTO PRO 

4278 NEXT CH:GOTO DHT 

4300 IF NCH<31 THEM GOTO HUH 

4301 IF L0CO1050 THEM ? "YOU can't do 
that here.":GOTO PRO 

14302 IF NOT FENC THEM ? "YOU can't do 

that. . .Yet! !";GOTO PRO 
1 4303 IF SHIP015 THEN ? "You're nissin 

g an essential ite«.":60T0 PRO 
I 4304 IF IN7>4 THEN ? "Drop the things 
I you don't need first. ":GOTO PRO 
[4305 SC=SC+TW;G0SUB OK : L0C=1150 : INV$=" 
I XHHXXX":GOTO NLC 
14325 IF NCHO30 AND NCH034 THEN GOTO 

HUH 

4326 GOSUB 13O00;GOSUB OK:IF L0C=1150 
1 THEN SC = SC + 50;? "H";P0KE 756 , 145 : GOSUB 

12:G0T0 4330 
I 4327 ? "Sleeping on Skull Island is ri 

sky.";? "A head-hunter has just scalpe 

d you.";GOTO DON 

4330 FOR I=A TO 15 : X1=USR CADR CF$) , I) ; M 
I EXT I;F0R CH=E to 15:P0SITI0M 3,CH:? » 

2;"GQQ y.y.y. congratulations!!! KY.y. eee" 

4331 POKE 710,CH»E;5OUND E, CH»3, 10, 8 ; S 
OUND 3,CH«D,10,D:NEXT CH:P0KE 710,128: 
FOR I=C TO 40;HEXT I 

4332 FOR CH=C TO 31 ; I=ASC CC$ CCH, CH) ) : 5 
OUND E,I,10,10:SOUND 3, I»3, 10, 4 ; FOR QX 
=C TO D;NEXT QK 

4333 SOUND E,A,A,A:MEXT CH;SOUND 3, A, A 
,A 

4334 X1=USRCADRCF$) ,12) ;POSITIOM 4,13; 
I? J»E;"You have survived a journey thru 

;? »Ej" Skull Island."; ;WIM=D 
14341 ? »E;" You are now living";? «Ej" 

on Paradise Isle with the native";? 
I BE;" girl as your wife.";GOTO DOM 
14400 FOR CH=E TO D ; IF 199$ CCH, CH) =" ," 
THEN I99$CCH,CH)="+";G0SUB L0C+15;G0SU 
B 0K;G0SUB DCH;SC=SC'('TN:G0TO 4402 

4401 NEXT CH;RETURM 

4402 GOSUB 3334:IN8=IN8-C;? "AS the ro 
I ck Strikes the boulder, it":? "lights 

the banboo on f ire.";FIRE=TR 



Til 4403 'IN7=IM7-C: GOTO 4021 
TF 4444 FOR CH=C TO D ! IF INU$ (CH, CH] =CHRS 

(NCHJ THEN INUS(CH,CH)="H":GOTO 4446 
KV 4445 NEXT CH 
CH 4446 IF NCH=11 THEN NAI=A 
ZH 4447 IF NCH=7 THEN SKU=ft 
CC 4448 RETURN 

AU 4500 IN7=IN7-C:IF NCH=4 THEN 4510 
KU 4501 IF HCH=5 THEN 4520 
UU 4502 ? "The Skull disappears into a cl 

oud of";? "SMOke as the fence lowers h 

ere.";G05UB 50O0:FENC=5;SC=5C+TM 
ZH 4503 POKE 7e9,14:SKU=A!RETURN 
BZ 4510 FOR CH = C TO D ! IF 139$ tCH, CHJ =" !•" 

THEN ? "He thanks you and says: 'Dig a 

hole":? "where the ground"; :GOTO 4512 

HT 4511 NEXT CH:IN7=IN7+C:? "+";!GOTO 403 

6 

TL 4512 ? " can neasure tine. ■":5C=5C+TW: 

RETURN 

KZ 4520 ? "She takes it gratefully .":KIS= 

5:RETURN 
AZ 5000 FOR CH=A TO 200 STEP 3:P0KE 709, C 

H:30UNI> A,CH,ie,ie:NEXT CH:50UNI> 0,A,A 

,A:RETURN 
MQ 10000 FOR CH = C TO 4 : JP=I> : QX=12 : GOSUB 1 

0010: JP=8:aX=8:G0SUB 10eie:NEKT CH:GOS 

UB 3333:RETURN 
JZ 10010 FOR X=JP+5 TO JP STEP -E;GOSUB 1 

0065:MEXT X:FOR X=JP TO JP+4 STEP 5:G0 

SUB 10065:NEXT X:S0UND 3, a, a, a 
MI 10011 SOUND C,A,A,A:FOR R=C TO D:NEXT 

R:RETURN 
CM 10065 SOUND 3,X»3,C,aX:S0UND C,X,8,QX» 

0.7:RETURN 
EM 12000 IF NCH=TM THEN RETURN 
GK 12001 GOTO HUH 
QH 13000 IF NCH=3e THEN RETURN 
KB 13005 ? "Watch it!H":G0T0 PRO 
HB 15000 IF NCH029 AND NCH031 AND NCH<> 

32 THEN RETURN 
N5 1500S IF NCH029 THEN 15180 
LM 15010 FOR CH=C TO D : IF (INUS CCH, CH) ="» 

" OR I99$CCH,CH)="»"3 AND NOT FOOD TH 

EN POP :GOTO 15500 
OR 15015 NEXT CH:G0T0 NTH 
IH 15100 IF LOCO1150 THEN GOTO NTH 
IK 15118 GOSUB OK:GOTO 4145 
Y 15500 GOSUB OK;? "It looks drinkable." 

;GOTO PRO 
NH 15999 IF TROD THEN GOTO PRO 
5P 16000 TRAP 16OO0;POKE 752,A:F0R CH=C T 

14;IF PWlStCH,CH)=" " THEN ? " ";:NE 

NP 16001 ? CHRSCASCCPWlSCCH,CHJ)+64) ; :NEX 

T CH:? " "J :INPUT PWS 
TO 16002 FOR CH=C TO LEH CPWSl : PWS tCH, CH3 = 
CHRS tA5C(PWStCH,CH))+10) ;NEXT CH 

VV 16003 IF PW$ = "I_01'M(X0I UK" THEN GRAPH 

ICS A;TRAP 40OOe:GOTO 16750 
ZG 16004 POKE 752,C:G0T0 32020 
faOB 17000 IF L0C=950 OR CL0C=125e AND NOT 
BG) THEN POKE 712, RND tC)»250 : UT=UT+5 . 
6E-03 

P 17001 VT=UT+0.81;IF gT<10 THEN RETURN 
ER 17005 ? "<■ ":? OKStC,D);"nis anyone ou 
t there?":G0T0 TW 

18808 ON INT(5WRNDCC]'<'C} GOTO 18100,18 
200,18380,18480,18500 
H 18100 LOC=600:I99$=I10S: RETURN 
II 18200 LOC=1200:I99S=I19S:RETURN 
R 18300 L0C=65B:I99S=I11S: RETURN 
G 18400 L0C=450:I99$=I7S:RETURN 
I 18500 L0C=3SB:I99S=I5S:RETURN 
:S 29000 GRAPHICS A:POKE ie,112:P0KE 5377 
4,112;P0KE 710,A;P0KE 752,C:P0KE 709, A 
:POSITION 12,10;? "Initializing..." 
y 29001 FOR I=A TO IS STEP 0.3;POKE 709, 
I:NEXT I:FOR 1=15 TO A STEP -0.3:POKE 
709,I:NEXT I 
K 29002 POKE 559, C 

G 30008 TRAP 302eO:CLOSE ttC:OPEN ttC,4,A, 
"D;STRIMG2" 

30005 INPUT ttC,DLI$:INPUT tiC, L$ : L=ADR C 
LJ);INPUT «C,FS:INPUT »C,CS:INPUT «C,S 
S$ 
30010 FOR 1=1536 TO 1710: GET ttC,a:POKE 

I, Q; NEXT I: CLOSE ttC 
30015 OPEN «C,4,A,"D;STRINGl":AT=USRtl 
619,36864] :CLOSE ttC:GOTO 31450 
30208 GRAPHICS A:POKE 559,34:? :? "Fil 
e not found. ":END 

31450 UUS="GETTAKDROGIUREACLIEATDRIEXA 
LOOENTKISHUGLIGRINCUTSAMDIGSHABUIGOT": 
SWS="NSEWDIHaXYZ>;" 
31455 MS$="NORSOUEASUESDOMINUHELQUIKXX 

YYYZzz";PWl$="n_«T- *\ 1 1 n H" 



31460 NN$="SHEPAPMOOCOCPEADIAROCSKUSAM 
BAMBAGNAIMACBARTORUDLTREPLAPOLHUTGIRBO 
ULIOBELNATSTASTOFIRHOLMILSLEBOASHIYOU" 
31462 NNSflO3,105>="HEL" 

31750 I0S="XXXXXX";I1$=IOS;I25=IOS;I3S 
=IOS;I4$=I0$;I5S=I0S:I6S=I0$:I7$=IOS;I 
8$=IOS:I9S=IO$: 1105=10$ :I11$=I0$ 

31751 I12$=I0$:I13S=IO$:I14S=IO$;I15$= 
IO$:I16$=I0S:I17S=IOS:I18$=IO$:I19$=I0 
S;I2OS=IOS:I21$=I0S:I22S=IOS:I25$=IOS 
31755 IHUS=IOS;Il$tC,C)=" |" : 12$ tC, C) =" 
r":I3$tc,CJ="*";I4$tC,C]="+":l6$tc,CJ = 

"•":I8$CC,C)="b":I9$CC,C3="t" 

31760 IIOSCCC) ="■*•": 112$ {C,C)="| ";I14S 

cc,C}="t";Il5$tc,C)="/":I16$cc,C)='V': 

117$ (C, C) =■■■ " : 118$ tC, C) ="t" : I16I$=I0$ 

31765 I19$CC,C)="J":I20$(C,C)="| ":I21$ 

(C, E)="r_": 122$ (C,C)="i": 1161$ tc,c) ="- 

";I5$CC,C)=' I0$CC,C3="h" 

31770 I7$CC,C>=", ":0KS="H-|-H , K . " ; WN 
$='■•,■ J Mhafs next B" 

31800 5l$="II]»[Il-GNIl»i:kDi3£l£]JaJIl«":GRA 

PHICS E:P0KE 559,A:P0KE 712,4;P0KE 710 
,4:P0KE 709,156 

31801 POKE 16,112:P0KE S3774 , 112 : POKE 
756,145:POSITI0N A,E:? ttD;"GGe skull i 
sland QGG":POKE 752,C:P0KE 82,0;? 

31802 POSITION 8,4 ;? »D; "B Y" ; POSITION 

A, 6;? ttDi"y.&y. tmna i ->vji»'i y.&y.":? •• •■ 

Copyright 1989 •■■J John Patuto ||" 

31803 ? :? " A.N.A.L.O.G. COMp 
utin3";P0KE 559,34;G0SUB 31804:POKE 82 
,2;G0T0 31810 

31804 FOR X=24 TO 65 STEP E:I=ASCCSSS{ 
x,x3):for r=a to 3:50UND R,I+R,10,8;NE 
XT R 

31805 FOR I=C TO ASC C55$ (X+C, X+CJ ) /20/ 
1cH1-4J:NEKT I:SOUND E,A,A,A:NEXT X;50U 

ND C,A,A,A:S0UND 3, a, a, a 
131806 SOUND A, A, A, A : RETURN 

31810 FOR CH = C to 20;NEKT CH : OPEN «E,8 

,A,"5:":P0KE 16,112;P0KE 53774, 112;RET 

URN 

31900 IF NOT FOOD AND TR>D THEN ? "Yo 

uTe Slowly growing weaker. ":GOTO TW 

31910 ON HI GOSUB 3450,3475,4212,31938 

,3475,5000,31804,10000,3333 
i 31920 FOR I=C TO D:NEXT I:G0TO TM 
I 31930 FOR CH=11 TO 23 ; X=ASC tSS$ CCH, CHI 

]:SOUND E,X,10,10;50UND 3, X/E, 10 , 8 ; FOR 
I=C TO CH/'1.S:NEXT I:S0UND 3, A, A, A 
. 31932 NEXT CH:50UND E, A, A, A : RETURN 
. 32009 IF NOT WIN AND NOT QU THEN G05 

UB 3450 

■ 32010 GOSUB 1800;? "Want to try again 
H"; 

1 32011 GET ttC,K;IF X=89 THEN RUN 

' 32012 IF K<>78 THEN 32011 

; 32020 ? "IS";? :FOR CH=C TO E : IF NOT W 

, IN THEN ? "Q ht:^t<j.Mnni»:m»fm 

HQ |g";NEXT CH:G0T0 32022 

I 32021 7 "laiHi l■^.l. Ml^v^||^VH.l.t^lu 

a E 0":NEKT CH:G0T0 32022 
I 32022 SOUND E, RND tAJ»255 , 10, E ; IF PEEKt 

53279) <>D THEN 32022 
I 32023 RUN 



LISTING 2: BASIC 



PU 
PS 
EH 
litU 
MV 

Ha 
Wl 



KL 
HP 



JI 
HF 



REM XMKKKKKKXXlClCKKllXKKXKKmOCXKlOOCK 

1 REM XXMXKKKMKKKKMKMKKKKMMXMXXKKXKIC 

2 REM *** STRING GENERATOR FOR «** 

3 REM ** SKULL ISLAND »» 

4 REM » CC) 1989 » 

5 REM ** ** 

6 REM *** BY JOHN PATUTO *** 

7 REM XKICICKKKMKMMIOCKKKKKKXXXKKICKKKXX 

8 REM KXXXKKKKXKXKMXXXXXKXXXXMKMKKXX 

9 REM 

10 DIM A$t2):? "IS";? :? ;? "Place the 
disk to Create the string "; ? "files in 

Drive ttl and hit [HSEIini"; :INPUT A$ 
15 ? ;? :? "One MOMent .. .Creating File 
. " ; ? 

20 CLOSE «l:OPEN «1, 8 , 6, "D ; STRINGl" 

30 FOR X=l TO 1024:READ A:? ttl;CHR$tA) 

;;NEXT X;? «1;CL0SE J»1:0PEN «1,8,0,"D: 

STRING2" 

35 FOR X=l TO 64; READ A;? ttl; CHR$ tA) J ; 

NEXT X:? ttl 

40 FOR X=l TO 43:READ A:? «l;CHR$tA);; 

NEXT K;? ttl 



I 



O 

o 

2 






OCTOBER A.N.A.L.O.a. Computing 





«l 

e 

z 



« 
e 

o 

at 
a. 



I 



»l;CHRSCfl) ; : 
:? t«l;CHRSca) ; 
■Now Ru 



MO 



50 FOR H=l TO 42:READ ft:? tJl; CHRS tftj ; I 

NEXT K:? «i 

60 FOR K=l TO 31:READ ft!? ttl; CHRS tftj ; ! 

NEKT X:? JJl 

65 FOR X=l TO 65:REftD 

NEXT X:? »»1 

67 FOR X=l TO 175!REftl> ft: 

:NEXT X:? ttl 

70 CLOSE Ml:? :? :? "All Done. 

n Skull Island. . ."^END 

99 READ ft;X=K+l:G0T0 99 

100 DATA o,e,e,e,e,e,e,o,i2,24|48,48,4 

8,0,48,0,0,102,102,102,0,0,0,0,51 

110 DftTft 102,204,0,0,0,0,0,204,102,51, 

0,8,0,0,0,24,36,66,153,153,66,36,24,66 

,195 

128 DftTft 102,24,24,102,195,66,12,24,48 

,0,0,0,0,0,28,56,112,112,112,56,28,0,5 

6,28,14 

130 DftTft 14,14,28,56,0,0,102,60,255,60 

,102,0,0,0,24,24,126,24,24,0,0,0,0,0,0 

140 DATA 8,28,24,48,0,0,0,126,0,0,0,0, 

0,0,0,0,16,56,16,0,0,6,12,24,48 

ISO DftTft 96,64,0,28,54,102,206,214,230 

,124,0,48,240,48,48,24,24,254,0,248,20 

4, 6,60,96,198 

160 DftTft 126,0,124,108,6,63,3,99,126,0 

,22,54,108,204,254,4,14,0,62,112,224,1 

24,6,198,252 

170 DftTft 0,62,102,192,252,198,198,252, 

0,254,198,198,6,12,24,48,0,60,102,198, 

124,198,198,124,0 

180 DftTft 124,198,198,126,6,140,120,0,1 

6,56,16,0,16,56,16,0,8,28,8,0,8,28,24, 

48,6 

190 DftTft 12,24,48,24,12,6,0,0,0,126,0, 

0,126,0,0,96,48,24,12,24,48,96,0,254,1 

98 

200 DftTA 12,24,24,0,24,0,126,255,153,2 

31,126,102,60,24,30,54,102,198,254,198 

,198,0,30,54,102 

210 DftTft 252,198,198,254,0,30,54,102,1 

92,192,198,254,0,240,216,204,198,198,1 

98,252,0,30,54,96,252 

220 DftTft 192,198,254,0,30,54,96,252,19 

2,192,192,0,30,54,96,192,222,198,254,0 

,102,102,198,198,254 

230 DATft 198,198,0,254,152,24,48,48,48 

,254,0,254,24,12,6,198,198,252,0,50,10 

2,204,248,204,198 

240 DftTft 198,0,24,48,96,192,198,198,25 

4,0,62,122,218,218,218,194,230,0,18,58 

,122,218,218,218,222 

250 DftTft 0,28,54,102,198,198,198,124,0 

,30,54,102,254,192,192,192,0,28,54,102 

, 198,222,198,126,0 

260 DftTft 30,54,102,254,216,204,198,0,3 

0,54,96,252,6,198,252,0,126,24,48,48,9 

6,96,96,0,38 

270 DftTft 102,198,198,230,254,124,0,102 

, 102,198,198,198,108,56,0,20 6,134,134, 

182,182,188,248,8,198,198 

280 DftTA 108,56,44,230,198,8,38,102,19 

8,254,6,198,252,0,248,140,6,62,96,192, 

254,8,8,30,24 

290 DATA 24,24,24,30,0,8,64,96,48,24,1 

2,6,8,0,120,24,24,24,24,120,0,0,8,28,5 

4 

308 DATA 99,0,8,8,8,8,8,8,8,8,255,8,8, 

0,8,8,8,8,8,0,8,224,252,255,255 

318 DftTA 252,224,8,255,8,142,138,142,2 

34,0,255,255,0,238,178,286,170,0,255,8 

,224,248,159,191,248 

320 DftTft 224,8,0,8,8,248,248,24,24,24, 

3,7,14,28,56,112,224,192,192,224,112,5 

6,28,14,7 

330 DATA 3,1,3,7,15,31,63,127,255,0,0, 

128, 192, 224,240, 252, 255, 128, 192,224, 24 

8,248,252,254,255 

348 DftTA 15,15,15,15,8,8,8,0,248,248,2 

48,240,8,8,8,8,255,8,236,178,178,234,0 

,255,255 

350 DftTA 0,238,68,68,78,0,255,0,8,6,7, 

15,31,63,255,8,28,28,119,119,8,28,0,7, 

8 

360 DATA 8,8,8,8,8,7,0,0,8,255,255,8,8 

,8,0,7,63,255,255,63,7,8,182,153,56 

370 DATA 92,26,24,48,48,32,112,241,251 

,255,255,255,255,255,0,234,74,74,78,0, 

255,224,16,16,16 

380 DftTft 16,16,16,224,255,8,200,174,17 

0,174,0,255,102,153,28,58,88,24,12,12, 

255,8,238,138,138 

390 DftTft 238,0,255,128,96,120,96,126,2 

4,30,0,0,24,60,126,24,24,24,0,0,24,24, 

24,126,60 

400 DftTft 24,0,0,24,48,126,48,24,0,0,0, 

24,12,126,12,24,0,0,255,0,230,134,96,2 

30,0 



410 DftTA 255,0,0,56,108,284,148,246,8, 
192,192,220,246,230,198,124,0,0,0,28,5 
4,96,192,126,8 

420 DftTft 6,6,30,54,102,198,126,0,0,0,6 
0,102,252,128,254,0,20,54,96,192,248,1 
92,192,0,0 

430 DATA 0,60,102,198,126,6,254,192,19 
2,220,246,230,198,198,0,0,24,0,24,24,4 
8, 96,0,0,6 

440 DATA 0,6,6,6,204,120,192,192,216,2 
40,240,216,206,0,12,24,48,96,96,96,96, 
0,0,0, 60 

450 DATft 246,182,182,182,0,0,0,220,246 
,230,198,198,0,0,0,28,54,102,198,124,0 
,0,0,60,102 

460 DftTft 198,252,192,192,0,0,120,204,1 
98,126,6,6,0,0,156,182,224,192,192,0,0 
,0,60,96,252 

470 DftTft 6,252,0,12,24,254,48,48,48,48 
,0,8,0,102,102,230,198,124,0,0,0,198,1 
98,198,108 
I 480 DATA 56,0,0,0,198,214,126,108,68,8 
,0,0,102,220,24,60,102,0,0,0,102,198,1 
98,126,12 

490 DftTA 248,0,0,254,156,56,114,254,0, 
0,24,60,126,126,24,60,0,24,24,24,24,24 
,24,24,24 

500 DftTft 0,126,120,124,110,102,6,0,8,2 
4,56,120,56,24,8,0,16,24,28,30,28,24,1 
6,0 

510 DftTft 104,104,141,1,2,104,141,0,2,1 
73,48,2,133,203,173,49,2,133,204,160,2 
4,169,130,145,203,169,0,141,243,2,96 
520 DftTA 0,72,138,72,169,0,162,10,141, 
10,212,141,24,208,142,23,208,230,208 
525 DftTft 165,208,41,16,74,74,74,141,1, 
212,104,170,104,64 

530 DftTft 104,104,133,206,104,133,205,1 
04,133,204,104,133,203,169,0,168,133,2 
13,177,203,133,207 

540 DftTft 104,104,168,136,48,10,165,207 
,209,205,208,247,200,132,212,96,169,0, 
133,212,96 

550 DATA 184,104,104,170,165,88,133,20 
3,165,89,133,204,216,24,202,48,15,165, 
203,105,40,133 

560 DftTft 203,165,204,105,0,133,204,24, 
144,238,160,159,169,0,145,203,136,208, 
251,96 

570 DftTA 80,80,60,52,46,52,60,60,60,60 
,52,46,44,46,52,0,52,52,46,44,30,44,46 
,0,46,46,44,46,52,60,60 

580 DftTA 180,140,120,90,160,120,92,78, 
92,78,130,130,110,130,130,110,130,110, 
80,86,96 

598 DftTft 98,108,185,200,215,288,165,25 
8,215,258,195,288,185,288,215,280,165, 
258,215,258,195,208 

600 DATA 185,200,215,200,148,150,150,1 
50,140,78,158,70,178,258,185,200,215,2 
00,165,258,215,244 
1448 DATA 72,169,180,141,10,212 
1450 DftTA 141,24,208,141,26,208 
1460 DATA 169,6,141,9,212,104 
1470 DATA 64,104,104,133,204,184 
1480 DATA 133,203,169,0,133,205 
1490 DATA 169,224,133,206,162,4 
1500 DATA 168,8,177,205,145,203 
1510 DATA 200,208,249,230,204,238 
1520 DATA 286,282,208,240,96,104 
1530 DATA 162,16,169,9,157,66 
1540 DATA 3,104,157,69,3,104 
1550 DATA 157,68,3,169,0,157 
1560 DATA 72,3,169,4,157,73 
1570 DATA 3,32,86,228,96,104 
1580 DATA 162,16,169,5,76,58 
1598 DATA 6,9,104,169,0,9,0,133 

1600 DATA 212,169,8,133,213,96 

1601 DATA 72,138,72,152,72,169,8,162,0 
,160,0 

1602 DATA 141,10,212,141,26,208 

1603 DATA 142,24,208,140,25,208 

1604 DATA 169,0,141,22,208,141,10,210, 
169,6,141,9,212,169,0,141,23,208,169,1 
56,141,0,2 

1605 DftTA 104,168,104,170,104,64,72,16 
9,0,141,10,212,141,26,208,169,104,141, 
10,210,141,0,2,104,64 f] 




bCTOBEB A.N.A.L.O.O. CornpO 



■N 



(continued from page 54) 



■ 5005 FOR D = 7 TO 12; POSITION 5,D;? t»6j" 
":NEXT D 

RK 5010 POSITION 6,8:? t»6; "psja mim " 

A« 5050 FOR L=29 TO 70 : SOUND 0,L, 10,10:50 

UND 1,L,6,10:NEKT L 
SO 5061 SOUND 0,0,O,O:SOUND 1,0,0,0:C=0 
SH 5062 POSITION 6,8:? tt6 ; "tTEHSininS" 
BH 5065 FOR W=l TO 30 : NEXT W:POSITION 6,8 

;? ae;" 
AL 5070 FOR H=l TO S0:NEKT W:C=C+1 
CC 5075 POSITION 5,10:? t»6 : "I JJ j--t-«--H^ 1 AJ " 
FF 5076 IF C=28 THEN FOR 1=0 TO 19:C0LOR 
0:PLOT 0,I:DRflWTO 19,I:F0R D=l TO 5:NE 
XT D:NEXT I:GOTO 3000 
US 5080 IF PEEKC53279)=6 OR 5TRIGCO3=0 TH 

EN SN=0:GOTO 5 
5M 6000 GOTO 5062 
NG 6939 REM — MUSIC — 
BH 7000 POSITION 9,1:? tt6; "0" : POSITION X, 

Y;? l»6;"»":P0KE 708,14 
ZL 7001 SOUND 0,255, 10, 10:SOUND 1,254,10, 
10;F0R L=l TO 50:POKE 710, RND t03 *89 : NE 
XT L 
LB 7002 RESTORE 7100 
YH 7005 READ MUSIC 

HN 7006 IF MUSIC=255 THEN GOTO 7129 
Va 7010 SOUND 0, MUSIC, 10, 10 
KM 7020 SOUND 1,MUSIC-1,10,1O 
TH 7025 FOR G=l TO 5:NEXT G:POKE 712, MUSI 

C:POKE 710, PEEK C53770) 
SP 7050 GOTO 7005 

BR 7100 DATA 121,96,96,121,91,91,81,81,81 
,91,108,121,144,128,144,121,108,121,72 
,64,72,91,81,53,47,45,53,33,35,40 
KJ 7110 DATA 45,47,53,60,60,255 
EW 7120 SOUND 0,0,0,0:SOUND l,0,O,e:POKE 

712,0 
UJ 7122 FOR 1=0 TO 19;C0L0R 0;PLOT I,0:DR 

AWTO I,22:NEKT I 
ZL 7201 IF DIFF<118 THEN DIFF=120 
YJ 7202 CTT=CTT+1 

FR 7204 IF CTT=3 THEN GOTO 9000 
PZ 7207 EG=EG+7:MB=WB+0.5:DIFF=DIFF-27 



XR 
FU 



7208 GOSUB 400 

7210 BRS=BRS+l:GRAPHICS 1+16:P0KE 756, 

CH/256:5ETC0L0R 2, RND Cl)»14, 9 : SETCOLOR 

0,8,10:G0B=G0B+7:G0T0 7 
8999 REM — BONUS SCREEN — 
EH 9000 GRAPHICS 17:P0KE 710, 14 : POSITION 

S,S:? B6 ; "ajiHiJjMiljB" : CTT=0 

MM 9001 POSITION 3,10:? »6 : ■ Vii|IB!IIHMH:ni1 



BC 



KI 9002 POSITION 5,12:? t»6; ■■ [IEBI>»--*f:VH" 
BO 9003 POSITION 4,14:? «6 ; "SOBaMinEnB" 

JP 9005 FOR D=l TO 100:POKE 708, RND CO] »10 
+50:NEXT D 

QH 9010 GRAPHICS 17:P0KE 756 , CH/256 : POSIT 
ION 5,0:? t>6 : " [TTTTtTa J.llliW " ; X = 10 : V=ia : P 
OKE 708,156 

LM 9011 PO SITION 0,22:? 86 J "LLLLLLLLLLLL-LI 

inrcnrnr":TiME=0:T=ie:iF SO300O0 then 

T=6; 51=4:52=16 

KI 9012 P OSITION 0,3:? t<6 ; "tiLLiLLLLLkLLLLLI 

[:nrcnr":iF SO7O0O0 then t=3 

PT 9013 POSITION 5,23:? «6;"AU0ID TRAPS" 

GM 9014 FOR K=5 TO 21 STEP 3 

DY 9015 POSITION 3,K:? tt6;" - - - - 

DQ 9017 NEXT K : 5CR=PEEK C88J +256»PEEK t89) : 

B5 = 
SO 9050 TP=SCR+X+20«Y;ST=STICKt03 :POKE 71 

0,14 
HY 9051 IF X=51 AND Y=S2 THEN GOTO 9700 
AL 9052 IF SO6O000 AND RNDC0)«9<5 THEN G 

OSUB 500 
NI 9055 GOSUB 4180:IF X>18 THEN POKE SCR+ 

X+20«Y,0:X=X-1 
SU 9060 IF X<1 THEN POKE SCR+X+20»Y, : X=X 

+ 1 
HU 9061 IF V<S THEN POKE SCR+X+20«Y, : Y=Y 

+ 1 
00 9062 IF Y>20 THEN POKE SCR+K+2e»Y, : Y= 

Y-1 
II 9063 SOUND 0,0,0,0 
LL 9064 IF BS=5 THEN GOTO 9200 
LU 9070 POKE TP,ll:FOR D=l TO 8:NEXT D:LO 

CATE X, Y,BC:POSITION 7,2:? tt6;"C0UNT " 

;B5 
TU 9075 IF BC=45 THEN GOTO 9700 
RH 9080 POKE TP,0:POKE 710 , PEEK C537703 
JP 9100 IF TIME=0 THEN T1=INT (RND tO)X15J + 

3:T2=INTCRND t0)«153+4:POSITION T1,T2:? 

«6;"2" 
KJ 9103 TIME=TIME+l:IF TIME>T THEN P05ITI 
ON T1,T2:? «6; FOR D = 10 TO STEP - 

1:S0UND o,io,10,d:next d:time=0 

YB 9107 IF BC=163 THEN FOR D=l TO 10 : SOUN 
D 0,D+2,8,6:P0KE 712,D*3:NEXT D:8S=BS+ 
„ l:50UND O,O,O,0:POKE 712,8 



9150 GOTO 9050 
9200 REM 

9240 POSITION 3,23:? «6; "CONGRATULATIO 

9241 POSITION 5,2:? «6; "[ENBoIIlBHnfflS " 

9245 FOR D=l TO 40:SOUND 0, RND C03 *10, 1 
0,10;SOUND 1,RNDC03«2O,1O,1O:NEXT D:A= 
INT CRND tO)»lOJ«lOO0 + 1008:SC = SC + A 

9246 POSITION 5,2:? t»6;"B0NUS ■•;AJ" 
":SOUND O,O,0,O:SOUND 1,0,0,0 

9247 FOR D=l TO 20: FOR F=15 TO STEP 
-l:POKE 708,F:NEKT F:NEXT D 

9248 SN=SN+1:G0SUB 4e0:GRAPHIC5 1+16:P 
OKE 756,CH/256:5ETC0L0R 2, RND CI) »14, 9 : 
SETCOLOR 0,8,10:GOTO 7 

9250 GOTO 9250 

9700 POKE TP,0:POSITION 3,23:? tt6;"S0R 

RY NO BONUS" 

9704 FOR JJ=30 TO 50 

9705 FOR D=-15 TO 15 STEP 3 : SOUND 0,AB 
StD)+JJ,10,10:POKE 708,D+5O:NEXT D 

9706 NEXT JJ 

9707 SOUND e,20,6,ie:POKE 708,255:FOH 
D=l TO 40;NEXT D:S0UND 0,0,0,0 

9719 SN=SN+l;GOSUB 400:GRAPHIC5 1+16:P 
JOKE 756,CH/256:SETC0LOR 2, RND CI) »14, 9 : 
SETCOLOR B,8,10:GOTO 7 
9999 GOTO 9050 




I 



■0 

o 
o 

b 



z 
o 

«l 



rx CRUNCHER 



aCTQBEH A.N.A.L.O.B. Compucing 



: t hu^ 



MORE 

Boor Camp 




End user 
Database Delphi 


r ^ 


1 FffiMflLXlC 1 


M C M P U ]^J__N_-gJ